在我的elasticsearch索引“ people”中,包含以下文件:
{"name": "John", "district": 1}, {"name": "Anne", "district": 1}, {"name": "Mary", "district": 2}, {"name": "Bobby", "district": 2}, {"name": "Nick", "district": 1}, {"name": "Bob", "district": 3}, {"name": "Kenny", "district": 1}
我想得到一个文档的结果,该文档的分区为2或1,但是最多只能包含2个。因此,如果以上是我的整个索引,我希望它返回:
{"name": "John", "district": 1}, {"name": "Anne", "district": 1}, {"name": "Mary", "district": 2}, {"name": "Bobby", "district": 2},
用Elastic中的单个查询是否可以实现此目标?非常感谢您的帮助!
这样的事情应该做到:
GET /some_index/some_type/_search?search_type=count { "aggs": { "district_1_or_2": { "filter": { "bool": { "should": [ { "term": { "district": 1 } }, { "term": { "district": 2 } } ] } }, "aggs": { "district": { "terms": { "field": "district", "size": 10 }, "aggs": { "top": { "top_hits": { "size": 2 } } } } } } } }