美文网首页
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