Elasticsearch всегда возвращает «тип отображения отсутствует» - PullRequest
38 голосов
/ 17 ноября 2011

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

В n-граммовом токен-фильтре ElasticSearch не найдены частичные слова

У меня естьсоздал простой 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"}
    }
  }
}'

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

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

Тогда после вызова сопоставления возникает ошибка:

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

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

Ответы [ 2 ]

96 голосов
/ 17 ноября 2011

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

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

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

Его необходимо применить кнапишите так:

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

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

2 голосов
/ 07 ноября 2015

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...