最近在将 Elasticsearch 整合进一个商城项目中,但是遇到了一点定位问题。
我目前有两种可以使用 Elasticsearch 的方法:
1 ,将所有店铺数据转移至 ES 内,放弃 MySQL 数据库。以后所有全文检索、单个店铺信息展示均从 ES 内获取数据。
2 ,在将数据填充到 ES 之后,保留 MySQL 数据库。 ES 仅做全文检索,并仅仅返回满足要求的店铺的 ID 。而真正展示的数据(无论是搜索列表,还是具体店铺页面)均从 MySQL 内根据检索到的 ID 获取。
这二者均有优点和缺点,不知道大家会选择那种?希望有做过全文检索的朋友支招。
1
Jaylee 2016-09-04 10:21:52 +08:00
同步脚本定期同步到 es 中
|
3
ihuotui 2016-09-04 10:39:54 +08:00 via Android
一般都是第二
|
4
ihuotui 2016-09-04 10:40:13 +08:00 via Android
同步时间看需求
|
5
leyle 2016-09-04 10:44:07 +08:00 1
我是这样处理的,在产生、修改数据时,同步增加、更新数据到 es 中,前台读取数据从 es 读,后台读取数据从 MySQL 读取。
|
6
xcatliu 2016-09-04 11:01:34 +08:00 via iPhone
建议第二种吧
|
7
Yuansir 2016-09-04 11:14:18 +08:00
用 es 的 mysql 同步 driver ,用第二种
|
8
kkzxak47 2016-09-04 11:39:37 +08:00 via Android
第二种啊,一种工具有自己的定位,数据库就是数据库,搜索引擎就是搜索引擎。
在把这些工具用出花来之前,老老实实的按他们的原始设定功能来用就好。 也可以适当的增加冗余,把常用的字段也存到 es 里面,比如搜索列表里用到的标题,摘要,时间等等。 |
9
jerry14 2016-09-04 11:55:47 +08:00
选择第二种,检索分析用 ES ;而产品业务的增查改用 Mysql 。你混在一起用,开发成本高,你肯定要用 ES 的 analyzed ,这搜索肯定会影响其他查询、增加操作
|
10
kingoldlucky 2016-09-04 12:43:30 +08:00
看并发量~小的话,直接 ES,简单. 并发量大的话就要考虑很多了
|
11
Suclogger 2016-09-04 16:04:34 +08:00
数据持久化在 mysql ,通过 binlog 获取变更推送到搜索,所有检索走搜索 ,列表信息可以都从搜索拿,详情可以酌情直接取数据库或者放 redis
|