mysql和elasticsearch能混合使用吗?

作者站长头像
站长
· 阅读数 17

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

回复
1个回答
avatar
test
2024-07-18

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

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

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

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

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容