2015-11-26 76 views
0

這是我的奇蹟感代碼:如何在java中編寫elasticsearch查詢聚合?

GET /sweet/cake/_search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     {"term": { 
      "code":"18" 
     }} 
     ] 
    } 
    }, 
    "size": 0, 
    "aggs": { 
    "group_by_state": { 
     "terms": { 
     "field": "id" 
     } 
    } 
    } 
} 

而且我想它寫在Java,但我dont't知道怎麼辦。

+0

你運行的是什麼版本的Elasticsearch? – Val

回答

1

您可以在official documentation的Java客戶端中找到一些示例。

但在你的情況下,你需要創建一個bool/must查詢使用QueryBuilders和一個terms聚合使用AggregationBuilders。它是這樣的:

// 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();