2017-10-14 101 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":{} 
       } 
      } 
      ] 
     } 
     } 
    } 
相關問題