2016-08-04 15 views
1

マッピング:枝のElasticsearchで同じ親IDを持つ子ドキュメントを検索するにはどうすればよいですか?

{ 
     "mappings": { 
     "branch": {}, 
     "employee": { 
      "_parent": { 
      "type": "branch" 
      } 
     } 
     } 
    } 

文書:従業員の

{ "index": { "_id": "london" }} 
{ "name": "London Westminster", "city": "London", "country": "UK" } 
{ "index": { "_id": "liverpool" }} 
{ "name": "Liverpool Central", "city": "Liverpool", "country": "UK" } 
{ "index": { "_id": "paris" }} 
{ "name": "Champs Élysées", "city": "Paris", "country": "France" } 

文書:

{ "index": { "_id": 1, "parent": "london" }} 
{ "name": "Alice Smith", "dob": "1970-10-24", "hobby": "hiking" } 

{ "index": { "_id": 2, "parent": "london" }} 
{ "name": "Mark Thomas", "dob": "1982-05-16", "hobby": "diving" } 

{ "index": { "_id": 3, "parent": "liverpool" }} 
{ "name": "Barry Smith", "dob": "1979-04-01", "hobby": "hiking" } 

{ "index": { "_id": 4, "parent": "paris" }} 
{ "name": "Adrien Grand", "dob": "1987-05-11", "hobby": "horses" } 

私は親ID londonを持っていた書類見つけたい、私は次のクエリを試してみました:

{ 
    "query":{ 
     "has_parent":{ 
     "type":"branch", 
     "query":{ 
      "term":{ 
       "_parent":"london" 
      } 
     } 
     } 
    } 

} 

しかし、ESは結果を返しません。Elasticsearchで同じ親IDを持つ子ドキュメントを検索するには?

答えて

2

has_parentはOPでは無効です。branchタイプでは、parentというフィールドはありません。以下は

は、有効なクエリの例です:above.Iは、クエリのためのJava APIを追加keetyの答えのための

{ 
    "query": { 
    "has_parent": { 
     "type": "branch", 
     "query": { 
     "ids": { 
      "values" : ["london"] 
     } 
     } 
    } 
    } 
+0

ありがとうございます。 –

+0

この問題はserval日のために私を悩ましています。あなたが私を助けることができますか?@keety http://stackoverflow.com/questions/38886939/add-highlight-does-not-work-with-has-child-query-in -elasticsearch-2-3-3 –

+0

確かにそれはショットを与えるだろう – keety

0

ありがとう:

HasParentQueryBuilder hpqb=QueryBuilders 
          .hasParentQuery("branch",QueryBuilders.idsQuery() 
          .ids("london")); 

は、あなたが持っている場合、それが役に立つことを願って同じ質問。

関連する問題