java 如何实现ElasticSearch自定义排序

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 转自:http://www.dcharm.com/?p=469 本文讨论ES的自定义排序的两种实现形式:基于gro...
    晴天哥_王志阅读 10,096评论 0 0
  • ——女娲与桃花江的传说 说起女娲补天的遗迹,中华大地幅员辽阔,自然留存着不少处地方。 当初女娲用黄泥造人后,日月星...
    惠娟桃江阅读 3,573评论 0 3
  • 也许还能在网上看到你的消息 也许我唱的歌还存在你的手机 也许我爱你埋在心底变成秘密 也许你想我的时候我也在想你 多...
    初六免一阅读 2,812评论 0 5

友情链接更多精彩内容