ElasticSearch: настройка реализации пользовательского анализатора
В настоящее время я оцениваю, можно ли и как перенести устаревший компонент анализатора на основе люцена в режим упругого поиска (0.19.18). Поскольку унаследованный код основан на lucene, я обернул анализатор в es-плагин. Конфигурация анализатора выглядит следующим образом:
index.analysis.analyzer.myAnalyzer.type : myAnalyzer
index.analysis.analyzer.default.type: myAnalyzer
index.analysis.analyzer.default_index.type: myAnalyzer
index.analysis.analyzer.default_search.type: myAnalyzer
Все идет нормально.
curl -XGET 'localhost:9200/_analyze' -d 'Some text'
Возвращает объект, который содержит правильно маркированный текст, но
curl -XGET 'localhost:9200/<name-of-my-index>/_analyze' -d 'Some text'
вернул бы текст, который вообще не был бы маркирован. Очевидно, вместо myAnalyzer применяется только фильтр нижнего регистра. Объекты в индексе также не анализируются правильно.
Отображения индекса выглядят следующим образом (вывод из head-plugin):
mappings: {
item: {
analyzer: myAnalyzer
properties: {
id: {
type: string
}
itemnumber: {
type: string
}
articletext: {
analyzer: myAnalyzer
type: string
}
sortvalue: {
type: string
}
salesstatus: {
format: dateOptionalTime
type: date
}
}
}
}
Поскольку я новичок в ES, я не могу понять, в чем причина такого поведения. Есть кто-то с идеей?
1 ответ
Вот как я настраивал собственный анализатор по умолчанию в Elasticsearch.
index:
analysis:
analyzer:
default:
filter: [lowercase]
tokenizer: whitespace
type: custom
Работает как шарм.