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的小白,有啥问题多多交流哦