# Автодополнение/живой поиск

**URL:** <https://discuss.elastic.co/t/topic/251119>\
**Category:** Вопросы на русском языке\
**Created:** [October 6, 2020, 12:30pm UTC](https://discuss.elastic.co/t/topic/251119 "2020-10-06T12:30:10Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![bikeformer](https://avatars.discourse-cdn.com/v4/letter/b/f0a364/32.png) [@bikeformer](https://discuss.elastic.co/u/bikeformer)\
**Post date:** [October 6, 2020, 12:30pm UTC](https://discuss.elastic.co/t/topic/251119/1 "2020-10-06T12:30:10Z")

</div>

Здравствуйте, уже несколько дней мучаюсь над реализацией автодополнения.  
К примеру у нас есть документ с title: "маша ходила за зайцем и искала помидор".  
Я пытаюсь сделать так чтоб пользователь мог найти этот документ по таким запросам:  
"маша искала помидор"  
"м **у** ша помидыр искала"  
"зайцем"  
и тд

Пробовал разные вариации Suggests, и не как не получаеться добиться ожидаемого результата.  
С последнего использовал completion suggester, но получилось искать только последовательно, (м **ж** ша ходила...) если пробовать "м **у** ша зайцем" - уже не находит документ.

Просьба направить меня в нужное русло. Документацию по suggesters прочитал несколько раз, но из-за слабого владения языком, видимо, утерял некоторые особенности, которе помогли бы мне в моей задачей

```auto
DELETE /local_organizations

PUT local_organizations
{
  "mappings": {
    "properties": {
      "suggest": {
        "type": "completion"
      },
      "name": {
        "type": "keyword"
      }
    }
  }
}

POST /local_organizations/_doc
{
  "suggest": "маша ходила за зайцем и искала помидор"
}

POST /local_organizations/_search?pretty=true
{
  "suggest": {
    "compliter": {
      "text": "маша искала помидор",
      "completion": {
        "field": "suggest",
        "size": 5,
        "fuzzy": {
          "fuzziness": "auto"
        }
      }
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [October 6, 2020, 11:55pm UTC](https://discuss.elastic.co/t/topic/251119/2 "2020-10-06T23:55:32Z")

</div>

> [@bikeformer](#):
>
> Я пытаюсь сделать так чтоб пользователь мог найти этот документ по таким запросам:

Если надо найти документ, то не очень понятно зачем нужен suggester, чтобы найти, надо просто искать.

```auto
DELETE /local_organizations

PUT local_organizations
{
  "mappings": {
    "properties": {
      "suggest": {
        "type": "text"
      }
    }
  }
}

POST /local_organizations/_doc
{
  "suggest": "маша ходила за зайцем и искала помидор"
}

POST local_organizations/_search
{
  "query": {
    "match": {
      "suggest": "маша искала помидор"
    }
  }
}

POST local_organizations/_search
{
  "query": {
    "match": {
      "suggest": "муша помидыр искала"
    }
  }
}

POST local_organizations/_search
{
  "query": {
    "match": {
      "suggest": "зайцем"
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![bikeformer](https://avatars.discourse-cdn.com/v4/letter/b/f0a364/32.png) [@bikeformer](https://discuss.elastic.co/u/bikeformer)\
**Post date:** [October 7, 2020, 7:05am UTC](https://discuss.elastic.co/t/topic/251119/3 "2020-10-07T07:05:18Z")

</div>

Забыл в самом сообщении написать, что это будет живой поиск. Юзер вводит текст, аяксом идут запросы на эластик. Пользователь сразу видит подсказки, основанные на самом тексте. (хороший пример - поисковые системы, которые предугадывают чуть ли не целые предложения по первым символам)  
Каждая подсказка, это документ. По нажатию на подсказку, я беру \_id документа и использую его в другом поиске.  
На сколько я понял, обычный поиск не сильно годиться для этого, лучше использовать suggests.  
п.с. только начал изучать эластик, и пытаюсь сделать все максимально правильно

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [October 7, 2020, 2:41pm UTC](https://discuss.elastic.co/t/topic/251119/4 "2020-10-07T14:41:27Z")

</div>

Обычный поиск годится для того, что вы хотите добится, он просто не оптимизирован для работы в живом поиске. Suggester - оптимизирован (из него убраны все дополнительные функции, которые присутствуют в поиске) но он не предоставляет нужные вам функции.

---

<div class="post-metadata">

**Author:** ![bikeformer](https://avatars.discourse-cdn.com/v4/letter/b/f0a364/32.png) [@bikeformer](https://discuss.elastic.co/u/bikeformer)\
**Post date:** [October 8, 2020, 6:56am UTC](https://discuss.elastic.co/t/topic/251119/5 "2020-10-08T06:56:57Z")

</div>

Спасибо за подсказку, буду с обычным поиском пробовать

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 5, 2020, 6:57am UTC](https://discuss.elastic.co/t/topic/251119/6 "2020-11-05T06:57:02Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
