Elasticsearch:inner_hits不适用于嵌套查询(嵌套两次)

时间:2015-05-15 12:40:35

标签: elasticsearch nested

我使用的是ES v1.5.2(所以inner_hits存在,并且对filters有效)并且我在elasticsearch中使用嵌套路径深度嵌套了文档:

  • 成员
  • members.members

这意味着在映射(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;应该被给予回报。)

0 个答案:

没有答案