# 1. Создать правила индексации, опеределив свой аналайзер и правила формирования токенов
PUT back_ed_test1
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer":{
"tokenizer":"tokenizer",
"type": "russian" // по русским текстам
}
},
"tokenizer":{
"tokenizer":{
"type":"ngram" // для частичного или нечеткого поиска
}
}
}
}
}
# 2. Определить поля с которые будут использовать наш аналайзер выше
PUT back_ed_test1/_mapping
{
"properties":{
"suggest_field":{
"type":"completion" // для автодополнения
},
"name": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
# 3. Если есть существующие данные, и их необходимо переиндексировать
POST _reindex
{
"source": {
"index": "back_ed_test"
},
"dest": {
"index": "back_ed_test1"
}
}
# 4. Поиск по фразе, соблюдая последовательность слов
GET back_ed_test1/_search
{
"query": {
"match_phrase": {
"name":
{
"query": "№ 608",
"slop": 10
}
}
}
}
P.S. не плохой источник, для поиска решений https://checkups.opster.com/ops-gpt/conversation/12223