[ ">
主页

一、作用:
通过使用脚本,可以在 Elasticsearch 计算自定义表达式。
二、支持哪些script脚本语言
默认的脚本语言采用的是painless
d7f0904e82db4d74878c9c4a77e9b2d7.png
三、script脚本使用示例
1、计算两个字段的排序

      $searchParams['body']['sort'] = [
                "_script" => [
                    "script" => [
                        "inline" => "doc['zwk_zkrs'].value > 0 ? doc['zwk_hege'].value/doc['zwk_zkrs'].value : 0"
                    ],
                    "type" => "number",
                    "order" => "desc",
                ]
            ];
   

2、计算两个字段的求和

      $searchParams['body']['script_fields'] = [
                "_script" => [
                    "script" => [
                        "source" => "doc['zwk_hege'].value + doc['zwk_hege'].value"
                    ],
                    "params" => [
                         "multiplier" => 2
                    ],
                ]
            ];
   

3、文档内容更新(指定如果文档不存在就应该先创建)

      $searchParams = [
                "_script" => [
                    "script" => [
                        "source" => "ctx._source.click_num+=1",
                        "upsert" => [
                            "views" => 1
                        ]
                    ]
                ]
            ];
   

四、使用说明
常用运算符和函数:
Integer, floating point, hex and octal literals
算数运算符: + - * / %
位运算符: | & ^ ~ << >> >>>
布尔运算符 (包含三元运算符): && || ! ?:
比较运算符: < <= == >= >
常用数学函数: abs ceil exp floor ln log10 logn max min sqrt pow
三角函数库函数: acosh acos asinh asin atanh atan atan2 cosh cos sinh sin tanh tan

示例:
a、如果字段缺失,会按照默认值0来计算,也可以使用: doc['myfield'].empty ? 100 : doc['myfield'].value
b、当字段是多值的时候,默认返回最小的值,可以选择别的值: doc['myfield'].sum().
c、布尔值字段暴率为数字,true 映射为1,false 映射为0.例如:doc['on_sale'].value ? doc['price'].value * 0.5 : doc['price'].value。

文档参考:https://www.jianshu.com/p/e2eaeb65af21

版权属于:三分快乐,七纷幸福
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0
查看目录

目录

来自 《Elaticseach script 脚本使用说明》
评论

三分快乐,七纷幸福
99 文章数
7 评论量
11 分类数
102 页面数
已在风雨中度过 2年199天23小时43分