2017-04-18 137 views
2

假設A是父類型,B是子類型。親子查詢

現在B有一個名爲'event'的字段。

在時間t1,B1(a'B'型doc)與字段「事件」=成功針對某個父母'A1'進行索引。現在在時間t2,另一個文檔B2被索引爲'事件'=對同一父'A1'失敗。

我要做的是找到所有沒有任何孩子或只有'事件'=成功孩子(而不是一個'事件'=失敗孩子)的父母。這可能嗎?

我可以看到的一個解決方案是,只要包含doc的'event'= fail被索引,就會用一些標誌更新父母(A1)。但我的B型文檔也有一個ingestion_time字段。所以我想找到在給定的時間範圍內從未得到「事件」=失敗的父母。

+0

你可以用'has_child'查詢:https://www.elastic.co/guide/en /elasticsearch/guide/current/has-child.html – alpert

回答

0

嘗試此查詢

{ 
    "query": { 
     "bool": { 
      "must_not": { 
       "has_child": { 
        "type": "b", 
        "query": { 
         "term": { 
          "event": "fail" 
         } 
        } 
       } 
      } 
     } 
    } 
} 

應該排除有fail字段值的孩子所有的父母

+0

Yaah。發佈這個問題後,完全相同的查詢打我。 反正謝謝。 :) 標記爲答案。 –