Користувацькі аналізатори Elasticsearch
Аналізатор токенізує текст та застосовує фільтри. Стандартний аналізатор не підходить для всіх випадків.
Компоненти користувацького аналізатора
Analyzer = Tokenizer + Filters
PUT /my_index
{
"settings": {
"analysis": {
"tokenizer": {
"my_tokenizer": {
"type": "pattern",
"pattern": "\\W+" // розбити за не-словесними символами
}
},
"filter": {
"my_synonyms": {
"type": "synonym",
"synonyms": ["quick,fast", "jumps,hops"]
}
},
"analyzer": {
"my_analyzer": {
"tokenizer": "my_tokenizer",
"filter": ["lowercase", "my_synonyms", "stop"]
}
}
}
}
}
Приклад email аналізатора
PUT /users
{
"settings": {
"analysis": {
"analyzer": {
"email_analyzer": {
"type": "custom",
"tokenizer": "uax_url_email",
"filter": ["lowercase"]
}
}
}
},
"mappings": {
"properties": {
"email": {
"type": "text",
"analyzer": "email_analyzer",
"fields": {
"keyword": { "type": "keyword" }
}
}
}
}
}
POST /users/_doc
{
"email": "[email protected]"
}
GET /users/_search
{
"query": {
"match": {
"email": "user@example" // працює!
}
}
}
Мовні аналізатори
PUT /articles
{
"settings": {
"analysis": {
"analyzer": {
"english_stop": {
"type": "standard",
"stopwords": "_english_"
},
"ukrainian_stop": {
"type": "standard",
"stopwords": "_ukrainian_"
}
}
}
}
}







