Как структурировать эластичный поисковый индекс - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь заменить в моем приложении полнотекстовый поиск mysql наasticsearch, но я не уверен, как оптимально спроектировать мои структуры данных и выполнить поиск.Прямо сейчас все мои данные находятся в одном индексе эластичного поиска, как в этом примере:

{
  "_index": "posts",
  "_type": "post",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "@version": "1",
    "title": "The post title",
    "description": "The post description",
    "tags": ["foo", "bar"],
    "content": "A long content string",
    "user_name": "John",
    "user_id": 1,
    "post_id": 1,
    "@timestamp": "2018-09-17T14:05:51.424Z"
  }
}

Я пока не указал отображения.Теперь мне нужно выполнить 3 поиска, которые были бы тривиальными для реализации, но неэффективными в mysql:

  1. Автозаполнение тегов в зависимости от популярности по мере их ввода пользователем (как это делает stackoverflow ...)
  2. Поиск пользователей по популярности
  3. Глобальный поиск по публикациям в полях описания и контента

Я смотрел на "подсказку завершения", но это не похоже на этоможно выполнить поиск по популярности.

Итак, какова будет оптимальная стратегия индексации / поиска для этих требований?

...