Elasticsearch对子类型的内部命中不在查询中

时间:2017-10-14 03:37:39

标签: elasticsearch parent-child

在弹性搜索中闯入内部命中。非常感谢任何帮助。

我有两种子类型:childA和childB。 我正在查询这样的孩子的父母

"query":{
    "bool": {
        "should": {
            "has_child": {
                "type": "ChildA",
                "query": {
                    "match": {
                        "name": {
                            "query": "a" 
                        }
                    }
                }
            }
        }
    }
} 

我的问题是如何在结果中包含所有类型为childB的子文档,而不会影响上述查询的结果。

我想在has_child查询(类型为childB)上使用内部命中,但我的查询并不依赖于childB类型。

有人有想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我找到了一种包含childB类型文档的方法。

我将以下查询与上面的查询(childA类型中的has_child)结合在一个过滤器查询中,以获取childB文档。我不确定它是否是一个好方法(考虑性能)

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