一个关于实际应用中 Elasticsearch 做全文检索定位的问题

2016-09-04 10:13:40 +08:00
 dangyuluo

最近在将 Elasticsearch 整合进一个商城项目中,但是遇到了一点定位问题。

我目前有两种可以使用 Elasticsearch 的方法:

1 ,将所有店铺数据转移至 ES 内,放弃 MySQL 数据库。以后所有全文检索、单个店铺信息展示均从 ES 内获取数据。

2 ,在将数据填充到 ES 之后,保留 MySQL 数据库。 ES 仅做全文检索,并仅仅返回满足要求的店铺的 ID 。而真正展示的数据(无论是搜索列表,还是具体店铺页面)均从 MySQL 内根据检索到的 ID 获取。

这二者均有优点和缺点,不知道大家会选择那种?希望有做过全文检索的朋友支招。

5639 次点击
所在节点    程序员
11 条回复
Jaylee
2016-09-04 10:21:52 +08:00
同步脚本定期同步到 es 中
dangyuluo
2016-09-04 10:22:30 +08:00
@Jaylee 也就是选择第二种咯?那么这个定期一般是多久呢?
ihuotui
2016-09-04 10:39:54 +08:00
一般都是第二
ihuotui
2016-09-04 10:40:13 +08:00
同步时间看需求
leyle
2016-09-04 10:44:07 +08:00
我是这样处理的,在产生、修改数据时,同步增加、更新数据到 es 中,前台读取数据从 es 读,后台读取数据从 MySQL 读取。
xcatliu
2016-09-04 11:01:34 +08:00
建议第二种吧
Yuansir
2016-09-04 11:14:18 +08:00
用 es 的 mysql 同步 driver ,用第二种
kkzxak47
2016-09-04 11:39:37 +08:00
第二种啊,一种工具有自己的定位,数据库就是数据库,搜索引擎就是搜索引擎。
在把这些工具用出花来之前,老老实实的按他们的原始设定功能来用就好。
也可以适当的增加冗余,把常用的字段也存到 es 里面,比如搜索列表里用到的标题,摘要,时间等等。
jerry14
2016-09-04 11:55:47 +08:00
选择第二种,检索分析用 ES ;而产品业务的增查改用 Mysql 。你混在一起用,开发成本高,你肯定要用 ES 的 analyzed ,这搜索肯定会影响其他查询、增加操作
kingoldlucky
2016-09-04 12:43:30 +08:00
看并发量~小的话,直接 ES,简单. 并发量大的话就要考虑很多了
Suclogger
2016-09-04 16:04:34 +08:00
数据持久化在 mysql ,通过 binlog 获取变更推送到搜索,所有检索走搜索 ,列表信息可以都从搜索拿,详情可以酌情直接取数据库或者放 redis

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303781

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX