Всем доброго дня!
В эластике новичок. Остался один шаг до начала использования - побороть морфологию. Проблема схожа с описанной в этой теме, но у меня само не заработало: Не получается побороть морфологию
По совету опытных товарищей выбрал Hunspell (с пересобранным russian morphology Эластик отказался запускаться), имеем следующее:
PUT /search_index
{
"settings": {
"analysis" : {
"analyzer" : {
"ru" : {
"type": "custom", //добавил позже, результат описан ниже
"tokenizer" : "standard",
"filter" : [ "lowercase", "ru_RU", "russian_stop"]
}
},
"filter" : {
"ru_RU" : {
"type" : "hunspell",
"locale" : "ru_RU",
"dedup" : true
},
"russian_stop": {
"type": "stop",
"stopwords": "_russian_"
}
}
}
}
}
}
Маппинг (полей на самом деле больше)
PUT search_index/_mappings
{
"properties": {
"title": {
"type": "text",
"analyzer": "ru"
}
}
}
Анализатор подключен:
POST search_index/_analyze
{
"text": "боярышника настойку",
"field": "title"
// "analyzer": "ru" - с этим тоже работает
}
выдаёт
{
"tokens" : [
{
"token" : "боярышник",
"start_offset" : 0,
"end_offset" : 10,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "настойка",
"start_offset" : 11,
"end_offset" : 19,
"type" : "<ALPHANUM>",
"position" : 1
}
]
}
После добавления в settings 'type': 'custom' перестал индексировать с ошибкой
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Mapper for [mnn_title] conflicts with existing mapper:\n\tCannot update parameter [analyzer] from [ru] to [default]"}],"type":"illegal_argument_exception","reason":"Mapper for [mnn_title] conflicts with existing mapper:\n\tCannot update parameter [analyzer] from [ru] to [default]"},"status":400}
До этого индексировал, но ничего не искал по морфологическим запросам.
Прошу помочь, ибо уже не терпится испытать этот замечательный инструмент в деле. Перепробовал всё.
Заранее спасибо.