elasticsearch 在ElasticSearch中使用JAVA API获取聚合函数的空值
我正在学习ElasticSearch,并创建了一个sdk来搜索ES中的数据。 我能够通过简单的搜索检索数据,但当我使用聚合函数(如avg和count)时,它会为聚合函数返回空值。 下面是我的代码:
elasticsearch 在ElasticSearch中使用JAVA API获取聚合函数的空值,
elasticsearch,java,
elasticsearch,Java,我正在学习ElasticSearch,并创建了一个sdk来搜索ES中的数据。 我能够通过简单的搜索检索数据,但当我使用聚合函数(如avg和count)时,它会为聚合函数返回空值。 下面是我的代码: try(RestHighLevelClient client = ElasticSearchClient.client(url,port)) { SearchRequest searchRequest = new SearchRequest(index.toLo
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());
try(RestHighLevelClient=ElasticSearchClient.client(url,端口)){
SearchRequest SearchRequest=新的SearchRequest(index.toLowerCase().trim());
SearchSourceBuilder SearchSourceBuilder=新的SearchSourceBuilder();
BoolQueryBuilder boolQuery=new BoolQueryBuilder();
对于(Map.Entry数据:details.entrySet()){
boolQuery.must(matchQuery(data.getKey(),data.getValue());
}
searchSourceBuilder.query(boolQuery);
如果(限制>0){
searchSourceBuilder.from(0);
searchSourceBuilder.size(限制);
}
searchSourceBuilder.aggregation(AggregationBuilders.avg(“averageTime”).field(“ExecutionTimeUnseconds”);
searchSourceBuilder.aggregation(AggregationBuilders.count(“noOfTimesApiUsed”).field(“serviceName”);
searchRequest.source(searchSourceBuilder);
searchRequest.scroll(新时间值(60000));//毫秒
searchRequest.searchType(searchType.DFS\u QUERY\u然后\u FETCH);
response=client.search(searchRequest,RequestOptions.DEFAULT);
sourceList=newarraylist();
for(SearchHit点击:response.getHits()){
字符串源=hits.getSourceAsString();
sourceList.add(source);
}
Logger.log(“最终响应:”,sourceList.toString();
我不明白代码中的问题是什么。请帮助