MapperParsingException [Analyzer [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-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"
}
}
}
}
}
}
}
1 ответ
Решение
"dbl_metaphone" - это фильтр токенов, а не анализатор. Вам нужно сначала установить плагин Phonetic Analysis, а затем создать собственный анализатор с ним. Дополнительную информацию можно найти по адресу https://www.elastic.co/guide/en/elasticsearch/guide/current/phonetic-matching.html.