use*_*201 18 filter aggregation elasticsearch
给定一组在一个字段中具有给定值的文档,我想知道有多少文档具有第二个字段的每个值.
我尝试使用以下查询的术语聚合来做到这一点:
{
"size": 0,
"filter": {
"term": {
"field1": "value"
}
},
"aggregations": {
"field2" : {
"terms" : { "field" : "field2" }
}
}
}
Run Code Online (Sandbox Code Playgroud)
但返回的计数显示整个索引中第二个字段的每个值的文档数,而不限于第一个字段具有给定值的文档.
我究竟做错了什么?
Mih*_*scu 27
您是否尝试过使用过滤查询?
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {
"field1": "value"
}
}
}
},
"aggregations": {
"field2": {
"terms": { "field": "field2" }
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里有一个比较:https: //www.elastic.co/guide/en/elasticsearch/guide/current/_post_filter.html
简而言之,您的顶级过滤器就像链接中的post_filter一样.要过滤,然后计算聚合,您需要使用查询.
如果您因为查询中的分数计算而担心性能损失,您可以查看基本上是过滤器包装器查询的常量分数查询.
| 归档时间: |
|
| 查看次数: |
20616 次 |
| 最近记录: |