MapperParsingException [Анализатор [dbl_metaphone] не найден для поля [фонетический]]

У меня есть индекс в кластере Elasticsearch, и я хочу поддерживать фонетическое сопоставление.

Это мой запрос:

curl -XPUT "http://localhost:9200/propertywebsites/_mapping/doc?pretty" -i -d '
{
"properties" : {
"phoneticbuilding" : {
"type" : "string",
"fields" : {
"phonetic" : {
"type" : "string",
"analyzer" : "dbl_metaphone"
}}}}
}
'

Я получил этот ответ об ошибке:

HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=UTF-8
Content-Length: 116

{
  "error" : "MapperParsingException[Analyzer [dbl_metaphone] not found for field [phonetic]]",
  "status" : 400
}

Кто-нибудь знает, почему анализатор dbl_metaphone не может быть распознан для фонетических полей?

Моя версия elasticsearch elasticsearch-1.7.2

Обновление 1

У меня уже есть анализатор следующим образом

PUT myIndexName/
{
  "settings": {
    "analysis": {
      "filter": {
        "dbl_metaphone": {
          "type": "phonetic",
          "encoder": "double_metaphone"
        }
      },
      "analyzer": {
        "dbl_metaphone": {
          "tokenizer": "standard",
          "filter": "dbl_metaphone"
        }
      }
    }
  }
}

Обновление 2

Запрос этого запроса

curl -XGET "http://localhost:9200/propertywebsites/_settings?pretty"

Я получаю следующий ответ:

{
  "propertywebsites" : {
    "settings" : {
      "index" : {
        "creation_date" : "1451838136296",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "version" : {
          "created" : "1070299"
        },
        "uuid" : "KVOuKVgGRBudsSplownrgg",
        "analsis" : {
          "filter" : {
            "dbl_metaphone" : {
              "type" : "phonetic",
              "encoder" : "double_metaphone"
            }
          },
          "analyzer" : {
            "dbl_metaphone" : {
              "filter" : "dbl_metaphone",
              "tokenizer" : "standard"
            }
          }
        }
      }
    }
  }
}

person William Kinaan    schedule 03.01.2016    source источник
comment
Ваши myIndexName и propertywebsites одинаковые или это опечатка?   -  person ChintanShah25    schedule 03.01.2016
comment
@ ChintanShah25 да, они одинаковые, я просто меняю это здесь, в вопросе.   -  person William Kinaan    schedule 03.01.2016
comment
что говорит GET propertywebsites/_settings?   -  person ChintanShah25    schedule 03.01.2016
comment
Вам необходимо перезапустить кластер после добавления этого   -  person ChintanShah25    schedule 03.01.2016
comment
@ ChintanShah25 я обновил свой вопрос, чтобы дать вам результат   -  person William Kinaan    schedule 03.01.2016
comment
@ ChintanShah25 Да, я уже перезапустил   -  person William Kinaan    schedule 03.01.2016
comment
это команда, я думаю, bin/plugin install elasticsearch/elasticsearch-analysis-phonetic/2.7.0, одна в ссылке не работает. это может быть проблемой?   -  person ChintanShah25    schedule 03.01.2016
comment
@ChintanShah25 плагин уже установлен, это сообщение, которое я получаю, поэтому я удалил плагин и установил его снова, перезапустил все, но все равно получаю то же исключение   -  person William Kinaan    schedule 03.01.2016
comment
Давайте продолжим обсуждение в чате.   -  person ChintanShah25    schedule 03.01.2016


Ответы (1)


«dbl_metaphone» — это фильтр токенов, а не анализатор. Вам нужно сначала установить подключаемый модуль Phonetic Analysis, а затем создать с его помощью собственный анализатор. Дополнительную информацию см. на странице https://www.elastic.co/guide/en/elasticsearch/guide/current/phonetic-matching.html.

person bittusarkar    schedule 03.01.2016
comment
Пожалуйста, просмотрите документацию, о которой я упоминал, полностью. Плагин устанавливает только фильтр токенов. Вам нужно создать собственный анализатор с ним. - person bittusarkar; 03.01.2016
comment
Я обновил свой вопрос, разве это не тот анализатор, о котором вы говорите? - person William Kinaan; 03.01.2016
comment
GET propertywebsites/_mapping перечисляет анализатор dbl_metaphone? - person bittusarkar; 03.01.2016
comment
Нет, он просто дает мне список сопоставлений для других полей, которые я добавил ранее. - person William Kinaan; 03.01.2016
comment
Вы перезапустили все узлы Elasticsearch после установки плагина на всех узлах? - person bittusarkar; 03.01.2016
comment
Да я уже все перезапустил, может проблема в фонетической версии с моей версией elasticsearch - person William Kinaan; 03.01.2016
comment
Я не знаю, в чем проблема, я только что создал новый индекс, и он работает. - person William Kinaan; 03.01.2016