Elasticsearchで部分的な単語を見つけるために、私はここで与えられたアドバイスに従っています:
ElasticSearch n-gram tokenfilterは部分的な単語を見つけられません
このバージョンを実行しようとする単純なbashスクリプトを作成しました。
curl -XDELETE 10.160.86.134:9200/products
curl -XPOST 10.160.86.134:9200/products -d '{
"index": {
"number_of_shards": 1,
"analysis": {
"filter": {
"mynGram" : {"type": "nGram", "min_gram": 2, "max_gram": 10}
},
"analyzer": {
"a1" : {
"type":"custom",
"tokenizer": "standard",
"filter": ["lowercase", "mynGram"]
}
}
}
}
}
}'
curl -XPUT 10.160.86.134:9200/products/_mapping -d '{
"product" : {
"index_analyzer" : "a1",
"search_analyzer" : "standard",
"properties" : {
"product_description": {"type":"string"},
"product_name": {"type":"string"}
}
}
}'
このスクリプトを実行すると、最初の2つのコマンド(製品のダンプ、インデックスの設定)が機能しているように見えます。
{"ok":true,"acknowledged":true}
{"ok":true,"acknowledged":true}
次に、マッピング呼び出し後にエラーが発生し、これが私に与えられます:
{"error":"ActionRequestValidationException[Validation Failed: 1: mapping type is missing;]","status":500}
誰も私が間違っていることを見ることができますか?グーグルを検索すると「マッピングが見つかりませんelasticsearch」のオートコンプリートが開始されるため、非常に一般的なエラーのようです。
マッピングをタイプに適用する必要があるため、これが起こっていることがわかります。
私はそれを間違ったものに適用しようとしました:
curl -XPUT 10.160.86.134:9200/products/_mapping -d '{
次のようにタイプに適用する必要があります。
curl -XPUT 10.160.86.134:9200/products/product/_mapping -d '{
簡単なグーグル検索ではこれに答えられなかったのは悲しいことです。また、私がリンクした前の投稿は非常に誤解を招くものであり、答えは間違っています。これについても指摘します。
Elastic Searchでは、インデックスのマッピングを設定できます。 Elastic Search 1.7.3の最新バージョンでこれを試したところ、マッピングをインデックスに正常に設定できました。
私は次を試しました、