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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM