Elasticsearch postfiler 取消过滤器
Elasticsearch postfiler cancel filter
在以下查询中,我想将查询结果过滤为 size
medium
和 color
blue
但我希望聚合忽略 color
blue
已应用。
{
"query":{
"bool" {
"must": {
"query_string": {
"query": "foo"
}
},
"should": {
// deferred
}
}
},
"filter": {
"term": {"size": "m"}
},
"aggregations": {
// deferred
},
"post_filter":{
"term":{"color":"blue"}
}
}
问题是只要 post_filter
存在,size filter
就不再对查询结果产生任何影响。我错过了什么?
编辑:弹性搜索版本 1.5.1
您使用的是哪个版本的elasticsearch?
如果您希望在聚合中考虑某个过滤器,它应该在查询范围内(因此使用过滤查询),任何其他过滤器都被认为在查询范围之外,因此不会被考虑用于聚合计数但会影响最终输出。
更改查询如下:
{
"query": {
"filtered": {
"query": {
"bool": {
"must": {
"query_string": {
"query": "foo"
}
},
"should": {
//deferred
}
}
},
"filter": {
"term": {
"size": "m"
}
}
}
},
"aggregations": {
//deferred
},
"post_filter": {
"term": {
"color": "blue"
}
}
}
这将仅汇总 size:m
的结果,但最终结果将汇总 color:blue
和 size:m
您的过滤器充当 post_filter,即它被后续 post_filter 覆盖。
您应该有一个涵盖尺码和颜色的 post_filter(如果您希望将这些从聚合中排除)或将尺码筛选器移动到筛选查询中:
"query": {
"filtered": {
"query":{
"bool" {
"must": {
"query_string": {
"query": "foo"
}
},
"should": {
// deferred
}
}
},
"filter" : {
"term": {"size": "m"}
}
}
}
在以下查询中,我想将查询结果过滤为 size
medium
和 color
blue
但我希望聚合忽略 color
blue
已应用。
{
"query":{
"bool" {
"must": {
"query_string": {
"query": "foo"
}
},
"should": {
// deferred
}
}
},
"filter": {
"term": {"size": "m"}
},
"aggregations": {
// deferred
},
"post_filter":{
"term":{"color":"blue"}
}
}
问题是只要 post_filter
存在,size filter
就不再对查询结果产生任何影响。我错过了什么?
编辑:弹性搜索版本 1.5.1
您使用的是哪个版本的elasticsearch?
如果您希望在聚合中考虑某个过滤器,它应该在查询范围内(因此使用过滤查询),任何其他过滤器都被认为在查询范围之外,因此不会被考虑用于聚合计数但会影响最终输出。
更改查询如下:
{
"query": {
"filtered": {
"query": {
"bool": {
"must": {
"query_string": {
"query": "foo"
}
},
"should": {
//deferred
}
}
},
"filter": {
"term": {
"size": "m"
}
}
}
},
"aggregations": {
//deferred
},
"post_filter": {
"term": {
"color": "blue"
}
}
}
这将仅汇总 size:m
的结果,但最终结果将汇总 color:blue
和 size:m
您的过滤器充当 post_filter,即它被后续 post_filter 覆盖。
您应该有一个涵盖尺码和颜色的 post_filter(如果您希望将这些从聚合中排除)或将尺码筛选器移动到筛选查询中:
"query": {
"filtered": {
"query":{
"bool" {
"must": {
"query_string": {
"query": "foo"
}
},
"should": {
// deferred
}
}
},
"filter" : {
"term": {"size": "m"}
}
}
}