美文网首页
java 如何实现ElasticSearch自定义排序

java 如何实现ElasticSearch自定义排序

作者: shuixinmeng | 来源:发表于2018-03-18 23:03 被阅读0次

1、es版本用的是5.1由于需要使用es的script的inline功能,需要修改es yml的配置文件,增加如下配置使其支持inline

script.inline: on
script.stored: on
script.file: on
script.engine.groovy.inline.aggs: on

增加完成上述配置需要重启es 注:不同的es版本配置不同

2、java代码

# 定义传入script的参数
Map<String, Object> params = new HashMap<>();
Map<String,String> map=new HashMap();
map.put('1','a');
map.put('2','b');
parans.put('m',map);

# 定义script字符串
String script="id = doc[id].value;return m[id+'']";

# 定义script 注意不同的es版本参数顺序不一样
Script script = new Script(ScriptType.INLINE,"groovy",script , params);

# 定义ScriptSortBuilder
ScriptSortBuilder builder = new ScriptSortBuilder(script, sortType).order(sortOrder);

# 设置由spring创建 这里不详细说明了
private Client client;
client.prepareSearch()
...
.addSort(builder)
...

完成!
本人初学es的小白,有啥问题多多交流哦

相关文章

网友评论

      本文标题:java 如何实现ElasticSearch自定义排序

      本文链接:https://www.haomeiwen.com/subject/avwyqftx.html