アナライザーによる分析のデフォルトのインデックス作成ポリシーを持つようにelasticsearchインデックスを構成しようとしていますkeyword
。次に、いくつかのフィールドでそれをオーバーライドして、それらをフリーテキスト分析できるようにします。したがって、フリー テキスト分析を効果的にオプトインします。ここでは、フリー テキスト マッチングのためにどのフィールドを分析するかをマッピングで明示的に指定しています。私のマッピング定義は次のようになります。
PUT test_index
{
"mappings":{
"test_type":{
"index_analyzer":"keyword",
"search_analyzer":"standard",
"properties":{
"standard":{
"type":"string",
"index_analyzer":"standard"
},
"keyword":{
"type":"string"
}
}
}
}
}
したがってstandard
、分析されたフィールドであるkeyword
必要があり、完全一致のみである必要があります。ただし、次のコマンドでサンプルデータを挿入すると:
POST test_index/test_type
{
"standard":"a dog in a rug",
"keyword":"sheepdog"
}
次のクエリに対して一致が得られません。
GET test_index/test_type/_search?q=dog
ただし、次のものと一致します。
GET test_index/test_type/_search?q=*dog*
standard
これは、フィールドが分析されていないと私に思わせます。私が間違っていることを誰かが知っていますか?