elasticsearch,多个字段的统计聚合 JAVA API
elasticsearch, stats aggregation on multiple fields JAVA API
我测试了以下聚合查询,运行 没问题。我想知道如何使用其 JAVA API 构建等效查询。事实上,我有每个元素的 List<String>
我想查看统计信息。我怎样才能动态地做到这一点?
提前致谢。
{
"from" : 0,
"size" : 0,
"aggs": {
"value_stats" :{
"stats": {
"field" : "value"
}
},
"qty_stats":{
"stats": {"field" : "qty"}
}
}
}
使用他们的 AggregationBuilders
添加聚合非常简单
// 1. replace this list of fields with yours
List<String> statFields = getFields();
// 2. bootstrap the query
SearchRequestBuilder search = node.client().prepareSearch()
.setSize(0).setFrom(0)
.setQuery(QueryBuilders.matchAllQuery());
// 3. add a stats aggregation for each of your fields
for (String field : statFields) {
search.addAggregation(AggregationBuilders.stats(field+"_stats").field(field));
}
// 4. execute the query
SearchResponse response = search.execute().actionGet();
我测试了以下聚合查询,运行 没问题。我想知道如何使用其 JAVA API 构建等效查询。事实上,我有每个元素的 List<String>
我想查看统计信息。我怎样才能动态地做到这一点?
提前致谢。
{
"from" : 0,
"size" : 0,
"aggs": {
"value_stats" :{
"stats": {
"field" : "value"
}
},
"qty_stats":{
"stats": {"field" : "qty"}
}
}
}
使用他们的 AggregationBuilders
// 1. replace this list of fields with yours
List<String> statFields = getFields();
// 2. bootstrap the query
SearchRequestBuilder search = node.client().prepareSearch()
.setSize(0).setFrom(0)
.setQuery(QueryBuilders.matchAllQuery());
// 3. add a stats aggregation for each of your fields
for (String field : statFields) {
search.addAggregation(AggregationBuilders.stats(field+"_stats").field(field));
}
// 4. execute the query
SearchResponse response = search.execute().actionGet();