elasticsearch painless 用法

一 、用途

        我们一般在添加一个需要计算后的字段或者通过某种规则计算后的值来排序是会使用到elasticsearch的脚本功能,es在5.x版本以后默认使用的就是painless无痛脚本

script_fields用法:

sort用法:

二、painless语法

    1、常用数据类型: int、double、String、List、Map、bool  (和java一致)

    2、变量定义:

          定义变量有两种方式,动态类型和静态类型,建议用静态类型,静态类型的计算速度是动态类型的10倍

          动态类型定义方式: def a = "abc"

          静态类型定义方式: int a = 1;   Sting b = "asdsd"

    3、获取文档中某个字段的值的用法:

         获取doc下字段:  doc['name'].value 

          nested字段取出来后就是数组,可用下标获取, 后面不用加value: doc['expect_jobs'][1]

         doc以外的字段可直接使用,如下:

          

     4、提取参数的用法

           在script下面添加params字段,params中就是我们提取的参数,用params.age的方式在脚本中使用,如下:

           

      5、if else用法,与条件使用&&  , 或的条件使用||  ,在使用painless脚本时,每一行结束需要加分号, 大括号后不能加分号;

         

      6、for循环的用法:

        

     7、script中必须有return, return是返回给es计算后的值, 没有return会报错:

        

 特别注意: painless在 有int和double字段混合计算时,会对double值自动取整, 导致计算值有偏差,所以建议数值计算都使用double类型

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值