给定在一个字段中具有给定值的一组文档,我想知道有多少个文档在第二个字段中具有每个值。
我尝试使用以下查询的术语聚合来做到这一点:
{
"size": 0,
"filter": {
"term": {
"field1": "value"
}
},
"aggregations": {
"field2" : {
"terms" : { "field" : "field2" }
}
}
}
但返回的计数显示了整个索引中第二个字段的每个值的文档数,而不限于第一个字段具有给定值的那些文档。
我做错了什么?
发布于 2014-04-03 02:57:49
您是否尝试过使用过滤查询?
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {
"field1": "value"
}
}
}
},
"aggregations": {
"field2": {
"terms": { "field": "field2" }
}
}
}
发布于 2014-11-03 12:59:30
这里有一个比较:https://www.elastic.co/guide/en/elasticsearch/guide/current/_post_filter.html
简而言之,您的顶级过滤器就像链接中的post_filter。要过滤,然后计算聚合,您需要使用查询。
如果您担心查询中分数的计算对性能造成的影响,您可以查看恒定分数查询,这基本上是一个过滤器-包装器查询。
https://stackoverflow.com/questions/22817026
复制相似问题