java里score什么意思_elasticsearch系列(七)java定义score

概述

ES支持groovy 和 java两种语言自定义score的计算方法,groovy甚至可以嵌套在请求的参数中,有点厉害,不过不在本篇讨论范围。

如何用自定义的java代码来定义score如何产生,这用到了ES的插件功能

关于es插件的相关操作,可以通过以下命令获得

./bin elasticsearch-plugn –h

操作步骤

1.增加配置

首先需要在ES的配置中增加以下,

旧版本是

script.disable_dynamic: false

目前用的ES是5.2.2,根据日志提示,改成如下,改完后需要重启ES

script.inline: true

script.stored: true

不得不说这个日志提供的信息真不错

9bf662dc7d7aa486dc0498af3efe6d28.png

如果不加这两条配置,则会这样这种错误

7bebbb8f81eaa4b66922aa6ede7665b7.png

2.写java代码

//java代码格式参考

3.写配置文件

配置文件格式参考

4.上传到ES集群

在$ELASTICSEARCH_HOME/plugins新建一个文件夹,这个文件夹的名称就是这个插件的名称,

例如有 三个文件夹

d1e0224638e2518eb2c5abc1afffdcc2.png

可以通过如下命令找到他们

9daadca8b6b84d6873d4ec8dd8d51abb.png

在新建的文件夹中,导入jar包和plugin-descriptor.properties文件(必须有)

5.重启ES服务

kill -9 pid

nohup ./elasticsearch &

6.使用

{"query": {"function_score": {"query": {"match": {"your_fields": "xxxx"}

},"functions": [

{"script_score": {"script": {"inline": "key","lang": "native","params": {"your_fields": "xxxxx"}

}

}

}

]

}

}

}

key解释:

Key

解释

备注

inline

调用插件的key,和插件名称是两个东西

在NativeScriptFactory接口中的

getName()方法设置

lang

自定义方式

native意思是用java原生实现

//关于自定义function-script-score

7.更新插件

由于ES集群会缓存插件代码,就算把插件删了依然可用,目前还是需要重启来更新插件

参考资料

//自定义java制作插件必要的步骤

//github完整插件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值