Мне нужна помощь, чтобы понять поведение Elasticsearch при поиске слов в некотором текстовом поле.У меня есть текстовое поле 'описание', которое выглядит как:
description: {
type: "text"
analyzer: "lower_ascii"
fielddata: true
}
с настройками:
lower_ascii: {
filter: [
"lowercase",
"asciifolding"
],
type: "custom"
tokenizer: "standard"
}
Так что оно токенизируется стандартным токенизатором и модифицированным полем для уменьшения ascii.Если поле содержит текст, например, 'ÁÁÁ XXX YYY ŽŽŽ' , оно создает токены, такие как 'aaa', 'xxx', 'yyy', 'zzz' .Тогда, если я хотел бы искать документы, которые содержат все слова «aaa zzz» в поле, он не работает с запросом match или match_phase.Итак, я обнаружил запрос span_near , который выглядит так, как будто он работает правильно, но он не применяет анализатор lower_ascii к значению поиска.Мой запрос выглядит так:
'query': {
'span_near': {
'clauses': {
{'span_term': {'description' => 'aaa'}},
{'span_term': {'description' => 'zzz'}}
},
"slop": 50,
"in_order": FALSE
}
}
Это работает так, как мне нужно (если я это понимаю), НО, если я попытался найти «БА», результат будет пустым (aaa zzz работает хорошо).Есть ли способ настроить анализатор lower_ascii в запросе или есть лучший способ сделать это лучше?Благодаря.