zoukankan      html  css  js  c++  java
  • es~seq_no_primary_term问题的解决

    seq_no_primary_term这个错误在聚合操作时出现的问题,这个问题是由于es客户端的版本与服务端版本不兼容的问题,例如:你的客户端是6.8.7,而es服务器版本是6.5.4,这时再进行topHits聚合操作时,就会出现这个错误。

    es服务器版本
    1
    es客户端版本

             <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>6.8.7</version>
             </dependency>
    

    上面的代码可以看到,客户端与服务端的版本出现了不兼容的情况,这时客户端在进行topHits分组时,就会传seq_no_primary_term参数 ,这时服务端不认这个参数 ,就出现了问题,解决方法很简单,就是降低客户端驱动版本即可。

             <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>6.5.4</version>
             </dependency>
    

    es聚合代码

    BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
    // 拼接查询条件
    queryBuilder.should(QueryBuilders.termQuery("createUser", "1"));
    // 创建聚合查询条件
    TermsAggregationBuilder operateTypeAggBuilder = AggregationBuilders.terms("commentId")
            .field("commentId").size(10000);
    operateTypeAggBuilder.subAggregation(AggregationBuilders.topHits("top").size(2)
            .fetchSource("content", "delFlag"));
    // 创建查询对象
    SearchQuery build = new NativeSearchQueryBuilder()
            .withQuery(queryBuilder) //添加查询条件
            .addAggregation(operateTypeAggBuilder) // 添加聚合条件
            .withPageable(PageRequest.of(0, 1)) //符合查询条件的文档分页,如果文档比较大,可以把这个分页改小(不是聚合的分页)
            .build();
    

  • 相关阅读:
    linux最常用命令记录(一)
    2020centos解决“nginx 403 Forbidden"错误的故事
    nginx显示静态html爆502 bad gateway的错误提示
    codeigniter框架的使用感受和注意事项
    网闸
    抗DDOS防火墙
    负载均衡
    上网行为管理
    漏洞扫描系统
    网络分析系统
  • 原文地址:https://www.cnblogs.com/lori/p/14374109.html
Copyright © 2011-2022 走看看