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

test
2024-07-18
正常操作就是数据一定会落到 MySQL 的,然后通过一些特殊手段,把数据从 MySQL 读出来,拼接好,再写入的 ES 里面去,然后搜索的时候就通过 ES 去搜索。
为什么要拼接呢,因为从数据库设计的角度,比如商品有多个尺寸规格、标签、编辑者等信息都是会单独分表的,如果你可能需要把这些数据进行检索的话就需要拼接,因为 ES 并不擅长这种分表形式的索引,所以就需要拼接成一个文档写入。
这个特殊手段可以是在你程序里面埋点,比如编辑、创建产品时,或者定时任务,手动执行都行。
一般来说 ES 里面的数据可能不具有时效性,所以对于一些时效性要求较高的字段,比如商品价格,这些可能还是需要结合数据库+短时间缓存来进行优化。
回复

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