我正在尝试在应用程序中将MySQL全文搜索替换为Elasticsearch,但是我不确定如何优化设计数据结构并执行搜索。现在,我的所有数据都在一个Elasticsearch索引中,例如以下示例:
{
"_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中效率低下:
我已经看过“完成建议器”,但是它似乎无法进行“人气”搜索。
那么,满足这些要求的最佳索引/搜索策略是什么?