Подтвердить что ты не робот

Elasticsearch всегда возвращает "тип отображения отсутствует"

Я следую приведенным здесь советам, чтобы найти частичные слова с elasticsearch:

ElasticSearch n-gram tokenfilter не находит частичные слова

Я создал простой bash script, который пытается запустить версию этого:

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"}
    }
  }
}'

После запуска этой script первые две команды (демпинговые продукты, затем установка индекса), похоже, работают, давая мне следующее:

{"ok":true,"acknowledged":true}
{"ok":true,"acknowledged":true}

Затем он выдает ошибку после вызова сопоставления, давая мне следующее:

{"error":"ActionRequestValidationException[Validation Failed: 1: mapping type is missing;]","status":500}

Может ли кто-нибудь увидеть, что я делаю неправильно? Поиск google запускает автозаполнение "mapping not found elasticsearch", поэтому, похоже, это очень распространенная ошибка.

4b9b3361

Ответ 1

Оказывается, это происходит потому, что к типу нужно применить отображение:

Я попытался применить его к неправильному:

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

Он должен применяться к типу типа:

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

Печально, что простой поиск Google не смог ответить на этот вопрос. Также предыдущий пост, который я связал, очень вводит в заблуждение, и ответ неверен, и я также укажу там.

Ответ 2

Устанавливает отображение индекса для поиска в Elastic. Я попробовал это с последней версией Elastic search 1.7.3, и мне удалось успешно установить отображение в индекс.

Я попробовал следующее: