Elasticsearch — Значения фильтрации ElasticRestHighLevelClient с разделением

#java #elasticsearch #aggregate

Вопрос:

Как создать запрос, подобный приведенному ниже, с помощью ElasticRestHighLevelClient:

Я не могу добавить эту часть в свой запрос.

 "include": {
               "partition": 0,
               "num_partitions": 20
            }
 

Вот что мне нужно:

 GET /_search
{
   "aggs": {
      "expired_sessions": {
         "terms": {
            "field": "account_id",
            "include": {
               "partition": 0,
               "num_partitions": 20
            },
            "size": 10000,
         }
      }
   }
}

 

Вот мой java-код.

         AggregationBuilder AggregationBuilder = AggregationBuilders
                .terms("CONTACT_ID")
                .field("CONTACT_ID")
                .size(10000);

 

Ответ №1:

Это то, что вы ищете:

   IncludeExclude includeExclude = new IncludeExclude(0, 20);
    
  AggregationBuilder aggrBuilder = AggregationBuilders
                           .terms("expired_sessions")
                           .field("account_id")
                           .includeExclude(includeExclude)
                           .size(10000);
    
  searchSourceBuilder.aggregation(aggregationBuilder);
 

Соответствующий JSON:

 "aggregations":{
      "expired_sessions":{
         "terms":{
            "field":"account_id",
            "size":10000,       
            "include":{
               "partition":0,
               "num_partitions":20
            }
         }
     }
}