我使用的是ES v1.5.2(所以inner_hits
存在,并且对filters有效)并且我在elasticsearch中使用嵌套路径深度嵌套了文档:
这意味着在映射(https://gist.github.com/frickm/834a4ff8f952cb86ec02)中,这两个字段被声明为inner_hits
。我还有一个工作查询(基本上是对未分析的字符串的双重嵌套过滤器),如下所示,它的工作完全正常(我的实际用例有更深的嵌套)。
我在查询中有两个inner_hits
子句:外部工作
问题是"内部" members
不起作用:对于第一个inner_hits子句,我们获得了" real" inner_hits
字段的内部命中;但对于第二个members.members
子句,我得到 "members.members": {
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
字段的结果,这是错误的(命中不能为空,因为那时整个文档不会被命中):
POST nia/condition/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"nested": {
"path": "members",
"filter": {
"bool": {
"must": [
{
"nested": {
"path": "members.members",
"filter": {
"bool": {
"must": [
{
"term": {
"members.members.findingRef.name": "ImpairedSenseOfTouch"
}
}
]
}
},
"inner_hits": {}
}
}
]
}
},
"inner_hits": {}
}
}
}
}
}
查询:
bool
备注:使用直接term
过滤器替换{{1}}过滤器也无济于事(因为整个"子文档和"子文档& #39;应该被给予回报。)