【发布时间】:2019-08-07 22:49:37
【问题描述】:
我无法在 Elasticsearch v6.8.0 中使用 match_phrase_prefix 限制嵌套聚合查询的结果
我可以使用match_phrase_prefix 限制非嵌套聚合的结果。我希望能够将相同的逻辑应用于嵌套字段,如下所示。索引映射正确地将嵌套字段类型列为嵌套,并且我能够在没有任何过滤器的情况下成功聚合该字段(使用match_all)。
成功使用match_phrase_prefix查询的非嵌套字段聚合:
GET index/_search
{
"query":{
"match_phrase_prefix": {
"field1": "Nurse"
}
},
"size":0,
"aggs":{
"field1":{
"terms":{
"field":"field1",
"size":100,
"order":{
"_count": "desc"
}
}
}
}
}
成功嵌套字段聚合(没有match_phrase_prefix):
GET index/_search
{
"query":{
"match_all": {}
},
"size":0,
"aggs":{
"field2":{
"nested":{
"path":"field2"
},
"aggs":{
"field2.nestedField":{
"terms":{
"field":"field2.nestedField",
"size":100,
"order":{
"_count": "desc"
}
}
}
}
}
}
}
不成功与match_phrase_prefix的嵌套字段聚合:
GET index/_search
{
"query":{
"match_phrase_prefix": {
"field2.nestedField": "en"
}
},
"size":0,
"aggs":{
"field2":{
"nested":{
"path":"field2"
},
"aggs":{
"field2.nestedField":{
"terms":{
"field":"field2.nestedField",
"size":100,
"order":{
"_count": "desc"
}
}
}
}
}
}
}
第三个查询的预期输出是一个桶列表,其键与前缀过滤器匹配。相反,我看到的是一个空的结果列表。有没有办法构造 match_phrase_prefix 以使用嵌套字段?或者在术语级别应用过滤器的方法?
【问题讨论】:
标签: elasticsearch elasticsearch-dsl