Я пытаюсь заменить в моем приложении полнотекстовый поиск 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:
- Автозаполнение тегов в зависимости от популярности по мере их ввода пользователем (как это делает stackoverflow ...)
- Поиск пользователей по популярности
- Глобальный поиск по публикациям в полях описания и контента
Я смотрел на "подсказку завершения", но это не похоже на этоможно выполнить поиск по популярности.
Итак, какова будет оптимальная стратегия индексации / поиска для этих требований?