Я новичок в эластичном поиске и пытаюсь создать одну демонстрацию подсказки завершения с помощью анализатора пробелов.
Согласно документации анализатора пробелов , Он разбивает текст на термины всякий раз, когда встречает пробельный символ. Итак, мой вопрос: работает ли это и с суггестером завершения?
Итак, для моего префикса подсказки завершения: "ela", я ожидаю, что в результате будет получено "Здравствуйте, эластичный поиск".
Я знаю, что для этого есть простое решение - добавить ввод с несколькими полями как:
"suggest": {
"input": ["Hello","elastic","search"]
}
Однако, если это решение, то в чем смысл использования анализатора? Имеет ли смысл анализатор в автозаполнении?
Мое отображение:
{
"settings": {
"analysis": {
"analyzer": {
"completion_analyzer": {
"type": "custom",
"filter": [
"lowercase"
],
"tokenizer": "whitespace"
}
}
}
},
"mappings": {
"my-type": {
"properties": {
"mytext": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"suggest": {
"type": "completion",
"analyzer": "completion_analyzer",
"search_analyzer": "completion_analyzer",
"max_input_length": 50
}
}
}
}
}
Мой документ:
{
"_index": "my-index",
"_type": "my-type",
"_id": "KTWJBGEBQk_Zl_sQdo9N",
"_score": 1,
"_source": {
"mytext": "dummy text",
"suggest": {
"input": "Hello elastic search."
}
}
}
Запрос на поиск:
{
"suggest": {
"test-suggest" : {
"prefix" :"ela",
"completion" : {
"field" : "suggest",
"skip_duplicates": true
}
}
}
}
Этот поиск не возвращает мне правильный результат, но если я использую prefix = 'hel', я получаю правильный результат: «Здравствуйте, эластичный поиск».
Вкратце, я хотел бы знать, работает ли анализатор пробелов с подсказкой завершения? и если есть способ, не могли бы вы предложить мне.
PS: Я уже искал эти ссылки, но не нашел полезного ответа.
Стандартный анализатор завершения ElasticSearch не работает
Какой анализатор Elasticsearch использовать для этого подсказчика завершения?
Я считаю эту ссылку полезной Подсказка завершения, ориентированного на слова (ElasticSearch 5. х). Однако они не использовали подсказку завершения.
Заранее спасибо.
Джимми