web-dev-qa-db-ja.com

Elasticsearchは常に「マッピングタイプがありません」を返します

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」のオートコンプリートが開始されるため、非常に一般的なエラーのようです。

39
Travis

マッピングをタイプに適用する必要があるため、これが起こっていることがわかります。

私はそれを間違ったものに適用しようとしました:

curl -XPUT 10.160.86.134:9200/products/_mapping -d '{

次のようにタイプに適用する必要があります。

curl -XPUT 10.160.86.134:9200/products/product/_mapping -d '{

簡単なグーグル検索ではこれに答えられなかったのは悲しいことです。また、私がリンクした前の投稿は非常に誤解を招くものであり、答えは間違っています。これについても指摘します。

103
Travis

Elastic Searchでは、インデックスのマッピングを設定できます。 Elastic Search 1.7.3の最新バージョンでこれを試したところ、マッピングをインデックスに正常に設定できました。

私は次を試しました、

2
Thamizharasu