Я новичок в Elasticsearch (ES), возился с анализаторами. Как указано в документации , в анализаторе можно указать «время индекса» и «время поиска», в зависимости от варианта использования. В моем документе есть текстовое поле title
, и я определил следующее сопоставление, которое вводит подполе custom
:
PUT index/_mapping
{
"properties": {
"title": {
"type": "text",
"fields": {
"custom": {
"type": "text",
"analyzer": "standard",
"search_analyzer":"keyword"
}
}
}
}
}
Итак, если у меня есть текст: "email-id is someid@someprovider.com"
, standard-analyzer
будет анализировать текст на следующие токены во время индексации: [email, id, is, someid, someprovider.com]
.
Однако всякий раз, когда я пытаюсь выполнить запрос в поле (с различными вариантами условий запроса) title.custom
, это не приводит к совпадениям.
Это то, что, как мне кажется, происходит, когда я запрашиваю ключевое слово: email
:
- Оно анализируется анализатором ключевых слов.
- Заголовок поля Значение .custom также анализируется анализатором ключевых слов (анализ токенов), в результате получается такой же набор токенов, как упоминалось ранее.
- Точное совпадение должно произойти на
email
токене, возвращающем документ.
Очевидно, что это не так, и в моем понимании есть пробелы.
- Я хотел бы знать, что именно происходит во время поиска.
- На общем c level, хотелось бы знать, как происходит анализ и поиск при указании комбинации поиска и анализатора индекса.