我有一个商城的数据库,正常情况下存放数据是用sql的,但是当数据很多的时候,搜索产品的时候可能用elasticsearch更好,请问这两个数据库可以混合使用吗?推荐这么做吗?这种操作是普遍操作吗?mysql本身有什么语句可以实现这种全局搜索吗?
我有一个商城的数据库,正常情况下存放数据是用sql的,但是当数据很多的时候,搜索产品的时候可能用elasticsearch更好,请问这两个数据库可以混合使用吗?推荐这么做吗?这种操作是普遍操作吗?mysql本身有什么语句可以实现这种全局搜索吗?
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答1.8k 阅读
3 回答2k 阅读
正常操作就是数据一定会落到 MySQL 的,然后通过一些特殊手段,把数据从 MySQL 读出来,拼接好,再写入的 ES 里面去,然后搜索的时候就通过 ES 去搜索。
为什么要拼接呢,因为从数据库设计的角度,比如商品有多个尺寸规格、标签、编辑者等信息都是会单独分表的,如果你可能需要把这些数据进行检索的话就需要拼接,因为 ES 并不擅长这种分表形式的索引,所以就需要拼接成一个文档写入。
这个特殊手段可以是在你程序里面埋点,比如编辑、创建产品时,或者定时任务,手动执行都行。
一般来说 ES 里面的数据可能不具有时效性,所以对于一些时效性要求较高的字段,比如商品价格,这些可能还是需要结合数据库+短时间缓存来进行优化。