2017-10-16 20 views
0

私は文の配列(文字列)のフィールドを持っています。単語が文章内にあれば、配列内を検索したいと思います。弾性検索クエリ:文の配列に一致する単語

"fields": { 
      "title": [ 
       "The book of the world" 
      ] 
     } 

単純なクエリ "本" は期待される結果を返さない:

GET catalog/_search 
    { 
    "fields" : "title", 
    "query":{ 
     "match" : { 
      "title":"book" 
     } 
    } 
} 

は、あなたのアイデアを持っていますか?

+0

あなたはマッピングを示していますができますか? GET catalog/_mapping – Miek

+0

マッピングは: "tokenizer": "standard" ' – OussamaM

答えて

1

インデックスにデータを追加する前にアナライザーを設定する必要があります。

アナライザーは、あなたのセンテンスをトークン(ここでは「世界」の「本」「世界」というストップワードを削除したもの)として「分割」するものです。

またどのようElasticsearch配列との取引の注意を払うhttps://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html

でドキュメントを読んでください。その場合のフィールド名がfields.titleタイトルではありませんhttps://www.elastic.co/guide/en/elasticsearch/reference/current/array.html

+0

デフォルトのアナライザは、コンテンツを分割しないものでオーバーロードされていました – OussamaM

1

試してみてください。

GET catalog/_search 
{ 
    "fields" : "fields.title", 
    "query":{ 
     "match" : { 
      "fields.title":"book" 
     } 
    } 
}