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的參數(shù)
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版本參數(shù)順序不一樣
Script script = new Script(ScriptType.INLINE,"groovy",script , params);
# 定義ScriptSortBuilder
ScriptSortBuilder builder = new ScriptSortBuilder(script, sortType).order(sortOrder);
# 設(shè)置由spring創(chuàng)建 這里不詳細(xì)說(shuō)明了
private Client client;
client.prepareSearch()
...
.addSort(builder)
...
完成!
本人初學(xué)es的小白灭贷,有啥問(wèn)題多多交流哦