2015-10-20 64 views
0

OK文件,所以我很新的ElasticSearch,我需要你的幫助......獲取具有相同父

我有一個類型,如:

|--------------------------- 
| PARENT_TYPE 
|--------------------------- 
| some_field: string 
| another_field: string 
|--------------------------- 

和一個孩子喜歡類型:

|--------------------------- 
| CHILD_TYPE 
|--------------------------- 
| query_field: string 
| another_query_field: string 
| _parent: PARENT_TYPE 
|--------------------------- 

所以......簡而言之:我們有PARENT_TYPE文件和CHILD_TYPE子文件。

我想要做的是:

  • 獲取所有的孩子(這將最有可能只有一個)與特定query_field
  • 獲取其父
  • 獲取的所有兒童該特定父代

(或...換言之:通過query_field查詢CHILD_TYPE並返回所有CHILD _TYPE與父母相同)。


什麼我迄今所做的:

(這只是得到我需要的query_field CHILD_TYPEs而我依然缺少發現最兒 - 用最相同。 -parent的事情。

PUT ES/my_index/_search 
{ 
    "query" : { 
     "filtered" : { 
     "filter" : { 
      "bool" : { 
       "must" : [ 
       { "term" : {"query_field" : "word" }}, 
       { "term" : {"another_query_field" : "en"}} 
       ] 
      } 
     } 
     } 
    } 
} 

那麼,怎麼可能做到?想法?

回答

0

好的,這就是我想到的。

我不知道它是否是最佳的解決方案(在任何的建議是更受歡迎),但它最肯定似乎是工作...

{ 
    "query": { 
     "has_parent": { 
      "type": "PARENT_TYPE", 
      "query": { 
       "has_child": { 
        "type": "CHILD_TYPE", 
        "query": { 
         "filtered" : { 
          "filter" : { 
           "bool" : { 
            "must" : [ 
             { "term" : {"query_field" : "someValue" }}, 
             { "term" : {"another_query_field" : "yetAnotherValue"}} 
            ] 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 
相關問題