如何在java中编写elasticsearch查询聚合?
How to write elasticsearch query aggregation in java?
这是我在 Marvel 中的代码自:
GET /sweet/cake/_search
{
"query": {
"bool": {
"must": [
{"term": {
"code":"18"
}}
]
}
},
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "id"
}
}
}
}
我想写成Java但我不知道怎么写。
您可以在 official documentation 中为 Java 客户端找到一些示例。
但在您的情况下,您需要使用 QueryBuilders
创建一个 bool/must
查询,并使用 AggregationBuilders
创建一个 terms
聚合。它是这样的:
// build the query
BoolQueryBuilder query = QueryBuilders.boolFilter()
.must(QueryBuilders.termFilter("code", "18"));
// build the terms sub-aggregation
TermsAggregation stateAgg = AggregationBuilders.terms("group_by_state")
.field("id");
SearchResponse resp = client.prepareSearch("sweet")
.setType("cake")
.setQuery(query)
.setSize(0)
.addAggregation(stateAgg)
.execute()
.actionGet();
这是我在 Marvel 中的代码自:
GET /sweet/cake/_search
{
"query": {
"bool": {
"must": [
{"term": {
"code":"18"
}}
]
}
},
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "id"
}
}
}
}
我想写成Java但我不知道怎么写。
您可以在 official documentation 中为 Java 客户端找到一些示例。
但在您的情况下,您需要使用 QueryBuilders
创建一个 bool/must
查询,并使用 AggregationBuilders
创建一个 terms
聚合。它是这样的:
// build the query
BoolQueryBuilder query = QueryBuilders.boolFilter()
.must(QueryBuilders.termFilter("code", "18"));
// build the terms sub-aggregation
TermsAggregation stateAgg = AggregationBuilders.terms("group_by_state")
.field("id");
SearchResponse resp = client.prepareSearch("sweet")
.setType("cake")
.setQuery(query)
.setSize(0)
.addAggregation(stateAgg)
.execute()
.actionGet();