您好,我正在尝试按照 sql 查询对 Elasticsearch 进行查询,我想使用 Java API 实现相同的逻辑
select dttime, avg(cpu) from table cpustats where server="X" and dttime="Y" group by dttime,cpu
现在我有以下 Java 代码,但它没有返回预期的输出
SearchResponse response = client.prepareSearch("cpuindex")
.setTypes("cputype")
.setQuery(QueryBuilders.matchAllQuery())
.addAggregation(AggregationBuilders.terms("cpu_agg")
.field("cpu").size(100))
.execute().actionGet();
请指导我是 Elastic 搜索的新手。提前致谢。
最佳答案
我认为这会有所帮助。
SearchResponse response=
client.prepareSearch("your_index_name_here").setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(
FilterBuilders.termFilter("server","x"),
FilterBuilders.termFilter("dt_time","x")
))).addAggregation(
AggregationBuilders.terms("dt_timeaggs").field("dt_time").size(100).subAggregation(
AggregationBuilders.terms("cpu_aggs").field("cpu").size(100)
)
).setSize(0).get();
请验证。
关于java - 使用 Java api 的 Elasticsearch 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964361/