elasticsearch - 在 ElasticSearch 中使用 JAVA API 获取聚合函数的空值
问题描述
我正在学习 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());
我不明白代码中有什么问题。请帮忙。
解决方案
推荐阅读
- excel - 如何对我的 Excel VBA 代码使用错误处理
- deep-learning - 此时将新数据添加到训练集中不会提高训练准确性
- jquery - 当我使用 jquery-ui 自动完成在文本区域中键入时,如何在任何位置实现自动完成?
- angular - @ViewChild() 来自另一个组件
- java - Thymeleaf 3 语法迭代列表
- >
- javascript - 如何在javascript中复制标签时增加ID
- flutter - 如何正确管理 Flutter 应用中的全局 textScaleFactor?
- powershell - 如何使用 powershell 命令获取 SCVMM 中可用主机的列表
- node.js - 如何在 macOS(mojave 10.14)上优雅地停止 nodejs 服务器侦听器?
- hibernate - 在应用程序中使用休眠序列作为通用序列