Как стать автором
Обновить

Комментарии 9

Подскажите elastic такое научился делать в 2021 ?

Делаю автокомплит, ищу по массиву тэгов в одном документе. Как находится подходящие в массиве под запрос выводятся только они, остальные пропускаются , например:

Не понятно, completion поле вполне может быть массивом.

Главное чтобы в маппинг его тип был именно completion.

Типа такого:

PUT sug_index/_mapping
{
  "properties": {
    "tags": {
      "type": "completion"
    }
  }
}

Документ должен быть

POST sug_index/_doc/3
{
  "tags": ["boom", "bom", "don"]
}

И ищем:

GET sug_index/_search
{
  "suggest": {
    "test": {
      "prefix": "do",
      "completion": {
        "field": "tags"
      }
    }
  }
}

Находим:

        ....
        "options" : [
          {
            "text" : "don",
        ....

Но лучше для автокомплита завести отдельное поле, даже если оно будет дублироваться с полем tags.

в том и дело что вы ищите do, но возвращается окромя do неподходящие тэги "boom", bom".

Да, а в таком случае проще всего завести отдельный индекс для тегов.

прошло 5 лет, и всё никак не сделают эту фичу ...

Автокомплит хорошо делается через запись тегов как nested с одним полем + edge-ngram. Это, конечно, не совсем саджесты, но оно выходит гораздо гибче в итоге.

Я думал крупные компании могут себе позволить разработать нормальный движок под свои задачи

крупные компании даже не могут ответить на вопрос выше , о чем ты...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий