Elasticsearch
Анализаторы
Поиск…
замечания
Анализаторы берут текст из строкового поля и генерируют токены, которые будут использоваться при запросе.
Анализатор работает в последовательности:
-
CharFilters(ноль или больше) -
Tokenizer(One) -
TokenFilters(ноль или больше)
Анализатор может быть применен к сопоставлениям, так что когда поля индексируются, это делается на основе каждого токена, а не на строке в целом. При запросе входная строка также будет запускаться через анализатор. Поэтому, если вы нормализуете текст в Анализаторе, он всегда будет соответствовать, даже если запрос содержит ненормированную строку.
картографирование
Анализатор может применяться к сопоставлению с помощью «анализатора», по умолчанию используется «стандартный» анализатор. В качестве альтернативы, если вы не хотите использовать какой-либо анализатор (поскольку токенизация или нормализация не были бы полезны), вы можете указать «index»: «not_analyzed»
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "my_user_name_analyzer"
},
"id": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
Multi-поля
Иногда бывает полезно иметь несколько разных индексов поля с различными анализаторами. Вы можете использовать возможности нескольких полей для этого.
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "standard",
"fields": {
"special": {
"type": "string",
"analyzer": "my_user_name_analyzer"
},
"unanalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
При запросе вместо простого использования «user.name» (который в этом случае все равно будет использовать анализатор stanard), вы можете использовать «user.name.special» или «user.name.unanalyzed». Обратите внимание, что документ останется без изменений, это влияет только на индексирование.
Анализаторы
Анализ в elasticsearch входит в контекст, когда вы готовы анализировать данные в своем индексе.
Анализаторы позволяют нам выполнять следующие действия:
- Сокращения
- Морфологический
- Типовая обработка
Теперь мы посмотрим на каждого из них.
Сокращения :
Используя анализаторы, мы можем сказать elasticsearch, как обрабатывать аббревиатуры в наших данных, т. Е. Dr => Doctor, поэтому всякий раз, когда мы ищем ключевое слово врача в нашем индексе, elasticsearch также возвращает результаты, которые указаны в них.
Стеблирование :
Использование стерилизации в анализаторах позволяет нам использовать базовые слова для модифицированных глаголов типа
слово изменения требовать Требование, требуется
Типовая обработка :
Анализаторы также обеспечивают обработку дескрипторов как при запросе, если мы ищем конкретное слово say 'resurrection', тогда elasticsearch вернет результаты, в которых присутствуют опечатки. Он будет обрабатывать опечатки, такие как resurection, reusurection, как таковые и будет перенастроить результат.
слово изменения воскрешение Resurection, воскрешение
Анализаторы в Elasticsearch
стандарт
просто
Пробелы
Стоп
Ключевое слово
Шаблон
язык
Снежный шар
Игнорировать анализатор случаев
Иногда нам может потребоваться игнорировать случай нашего запроса относительно соответствия в документе. Анализатор можно использовать в этом случае, чтобы игнорировать случай во время поиска. Каждое поле должно содержать этот анализатор в свойстве, чтобы работать:
"settings": {
"analysis": {
"analyzer": {
"case_insensitive": {
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
}