2016-12-05 9 views
0

ElasticSearchでquery_stringというクエリに関する質問があります。私はインデックスのすべてのタイプとフィールドで全文検索を作成したい。ネストされたオブジェクトに対してquery_string文字列が実行されていますか?例えば、私は、クエリを呼び出すときに、ESネストされたかだけmy_type対象にして、ネストされた検索を含むすべての分野を横断検索します。このマッピング弾性検索ネストされたオブジェクトquery_string

{ 
    "my_index": { 
    "mappings": { 
     "my_type": { 
     "properties": { 
      "group": { 
      "type": "string" 
      }, 
      "user": { 
      "type": "nested", 
      "properties": { 
       "first": { 
       "type": "string" 
       }, 
       "last": { 
       "type": "string" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

とクエリ

GET /my_index/_search 
{ 
    "query": { 
     "query_string" : { 
      "query" : "paul" 
     } 
    } 

} 

を持っているIネストされたクエリを使用する必要がありますか?

答えて

1

あなたがルートにQUERY_STRINGからネストされたフィールドを参照することはできません。つまり、これは動作しません。

{ 
    "query": { 
     "query_string": { 
      "query": "myNestedObj.myTextField:food" 
     } 
    } 
} 

は、特定のネストされたフィールドで検索するには、ネストされた句を使用する必要があります。しかし

{ 
    "query": { 
     "nested": { 
     "path": "myNestedObj", 
     "query": { 
     "query_string": { 
      "query": "myNestedObj.myTextField:food" 
     } 
     } 
     } 
    } 
    } 
} 

を、私は擬似フィールド「_all」はないことがわかりましたフィールドを入れ子に含まので、このクエリは、(どこか他のと同様に)myNestedObj.myTextFieldの「食べ物」を含むドキュメントを見つけるだろう@anthonybruni

{ 
    "query": { 
     "query_string": { 
      "query": "_all:food" 
     } 
    } 
} 
+0

おかげで、_all 『「しかし、私はその擬似フィールドがわかりました』ネストされたフィールドを含んでいるので、このクエリwo uldはmyNestedObj.myTextFieldに「food」を含むドキュメントを見つけました(他の場所も同様)。この回答は私が求めていたものでした – Pauli

0

試してみてください。

GET my_index/_search?q=paul 
関連する問題