seq_no_primary_term
這個錯誤在聚合操作時出現的問題,這個問題是由於es客戶端的版本與服務端版本不兼容的問題
,例如:你的客戶端是6.8.7,而es服務器版本是6.5.4,這時再進行topHits聚合操作時,就會出現這個錯誤。
es服務器版本
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();