全文搜索

来源:5-8 -simple-query-string-query

慕斯卡8249573

2019-06-30

你好,我最近在做聚合报表的查询的时候发现使用mysql做筛选跟查询需要join多张关联表,这样性能会比较差,所以考虑用elasticsearch做全文搜索,但是使用elasticsearch做全文搜索的话需要把聚合表所有的字段保存在elasticsearch上,如果mysql的聚合表中数据有可能经常改动,我需要怎么保证elastisearch内容跟mysql保持一致,如果频繁更改会不会影响elastisearch性能,还有每次mysql更改都需要更改elasticsearch关联的所有数据,请问下一mysql的多表聚合查询是怎么做全文搜索的,谢谢

写回答

1回答

rockybean

2019-07-05

  1. mysql 的多表数据需要提前关联好后存入 es 中,因为 es 无法做 join,这里一般要采取空间换时间的方法

  2. 如果你要实时的同步 mysql 的变化,那么你可以选择在业务逻辑层做处理,即凡是修改 mysql 数据的地方,都触发 es的数据更新。另一个方法是订阅 mysql 的数据变更,比如 binlog,然后发现是相关表变动时,则触发更新 es 的逻辑

  3. 频繁更新 es 数据性能肯定不会太高,但这个也是相对的,要注意控制单个分片的大小,建议这种搜索场景不要超过 15GB

0
0

Elastic Stack从入门到实践,动手搭建数据分析系统

有了Elastic Stack,不用写一行代码,你也可以玩转大数据分析!

1361 学习 · 397 问题

查看课程