Я изучаю ElasticSearch и создал SDK для поиска данных в ES.Я могу получить данные с помощью простого поиска, но когда я использую агрегированную функцию, такую как avg и count, она возвращает нулевое значение для функций агрегирования.Ниже мой код:
try(RestHighLevelClient client = ElasticSearchClient.client(url,port)) {
SearchRequest searchRequest = new SearchRequest(index.toLowerCase().trim());
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQuery = new BoolQueryBuilder();
for (Map.Entry<String,String> data: details.entrySet()){
boolQuery.must(matchQuery(data.getKey(),data.getValue()));
}
searchSourceBuilder.query(boolQuery);
if(limit>0) {
searchSourceBuilder.from(0);
searchSourceBuilder.size(limit);
}
searchSourceBuilder.aggregation(AggregationBuilders.avg("averageTime").field("executionTimeInSeconds"));
searchSourceBuilder.aggregation(AggregationBuilders.count("noOfTimesApiUsed").field("serviceName"));
searchRequest.source(searchSourceBuilder);
searchRequest.scroll(new TimeValue(60000));//in millisecond
searchRequest.searchType(SearchType.DFS_QUERY_THEN_FETCH);
response = client.search(searchRequest, RequestOptions.DEFAULT);
sourceList = new ArrayList<>();
for (SearchHit hits: response.getHits()) {
String source = hits.getSourceAsString();
sourceList.add(source);
}
Logger.log("Final Response :", sourceList.toString());
Я не могу понять, в чем проблема в коде.Пожалуйста, помогите.