2017-10-14 73 views
0

在elasticsearch上挣扎着内部匹配。将不胜感激任何帮助。Elasticsearch不在查询中的子类型的内部匹配

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

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

我的问题是如何在结果中包括类型childB的所有子文档,以及在不影响从上面的查询结果。

我正在考虑对has_child查询(类型为childB)使用inner-hits,但我的查询不依赖于childB类型。

任何人有想法?

在此先感谢

+0

它不清楚你想要存档的东西。 –

+0

@TarasKohut对不起,我的问题没有明确指出。我找到了一种方法。其发布如下 –

+0

请添加您的映射和您的数据的一些示例。也许我们可以给你一些更好的解决方案来解决你的问题。 – Eli

回答

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":{} 
       } 
      } 
      ] 
     } 
     } 
    } 
相关问题