如何在同一路径的多个嵌套子查询中返回多个内部匹配?

时间:2018-09-20 22:23:43

标签: elasticsearch

当我对同一路径有多个嵌套子查询时,结果似乎只包括最后一个嵌套子查询的内部匹配结果。有没有办法返回多个嵌套子查询的所有内部匹配结果?

例如

{
    "query": {
        "bool: {
            "must": [{
                "nested": {
                    "query": {...},
                    "path": "path_a",
                    "inner_hits": {}
                }
            },{
                "nested": {
                    "query": {...},
                    "path": "path_a",
                    "inner_hits": {}
                }
            }]
        }
    }
}

2 个答案:

答案 0 :(得分:3)

如果您在name上添加唯一的inner_hits,则结果将基本上包含您期望的内部匹配的地图。

注意:似乎内部匹配有时在matched_queries中包含额外的查询名称(来自其他嵌套查询),因此可能需要一些后处理

答案 1 :(得分:1)

对于同一路径,需要在子查询之前指定嵌套路径。

下面是通过匹配或范围在同一嵌套路径中搜索的示例。您可以根据需要修改搜索。

    GET index/_search
    {
      "query": {
        "nested": {
          "path": “path.subpath”,
          "query": {
            "bool": {
              "must": [
                { "match": { “path.subpath.match1”: “valueMatch” }},
                { "range" : {  “path.subpath.range1” :         {"gte": “rangeMatch”  }  }  
 }
              ]
            }
          }
        }
      }
    }

我希望这会有所帮助!