ElasticSearch:如何使用父/子内部命中获取不同类型的所有子对象

时间:2016-01-27 12:00:31

标签: elasticsearch

我遇到“内部点击”功能的问题。我只能获得一种类型的子对象,因为I have to specify是查询的子对象类型。

例如,我可以使用以下代码

成功获取所有父对象及其“ChildA”对象
{
  "query": {
    "has_child": {
      "type": "ChildA",
      "query": {
        "match_all": {}
      },
      "inner_hits": {}
    }
  }
}

是否可以同时获取ChildA和ChildB对象?

1 个答案:

答案 0 :(得分:3)

您可以使用has_child查询将多个inner_hits查询与bool结合使用。例如,如果你想找到所有拥有" ChildA"或者#B; ChildB"然后返回他们拥有的所有孩子(无论是ChildA还是ChildB或两者),你可以做这样的事情:

"query": {
  "bool": {
    "should": [
      {
        "has_child": {
          "type": "ChildA",
          "query": {
            "match_all": {}
          },
          "inner_hits": {}
        }
      },
      {
        "has_child": {
          "type": "ChildB",
          "query": {
            "match_all": {}
          },
          "inner_hits": {}
        }
      }
    ]
  }
}