mysql和elasticsearch能混合使用吗?

我有一个商城的数据库,正常情况下存放数据是用sql的,但是当数据很多的时候,搜索产品的时候可能用elasticsearch更好,请问这两个数据库可以混合使用吗?推荐这么做吗?这种操作是普遍操作吗?mysql本身有什么语句可以实现这种全局搜索吗?

阅读 2.6k
1 个回答

正常操作就是数据一定会落到 MySQL 的,然后通过一些特殊手段,把数据从 MySQL 读出来,拼接好,再写入的 ES 里面去,然后搜索的时候就通过 ES 去搜索。

为什么要拼接呢,因为从数据库设计的角度,比如商品有多个尺寸规格、标签、编辑者等信息都是会单独分表的,如果你可能需要把这些数据进行检索的话就需要拼接,因为 ES 并不擅长这种分表形式的索引,所以就需要拼接成一个文档写入。

这个特殊手段可以是在你程序里面埋点,比如编辑、创建产品时,或者定时任务,手动执行都行。

一般来说 ES 里面的数据可能不具有时效性,所以对于一些时效性要求较高的字段,比如商品价格,这些可能还是需要结合数据库+短时间缓存来进行优化。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题