【轻知识】对ElasticSearch的简单使用

对项目的回顾。

背景

【轻知识】对ElasticSearch的简单使用_第1张图片
image.png

有一个方便运营选品的后台。后台的商品都是消息流消费调用选品后台的接口存了一份商品。后来,商品数量超过了1000万。再按照上面表单查询就根本不可能了。主要是有模糊查询就慢死。

那么就上搜索引擎吧?Solr与ElasticSearch,看了看相关对比文章。就用ElasticSearch吧。

思考的问题点

1.mysql的结构怎么和ES中的结构对应起来。如:choose库中的goods表中的商品在es中怎么表示?

上面的表单是连表查的。所以灌入数据也是连表后的结果。保证es存的跟不用es从数据库查的字段保持一致。

2.es中的数据是怎么存储的?存储到哪个位置,可否自定义?怎么备份数据?

es有副本。实际上我们就是单机。

3.mysql中的CURD在es中怎么体现?

手册中有了

4.如果es服务挂掉,怎么让请求去访问mysql,或者其它的容错方案?

如果es走不通。就切mysql。实际上这步没有具体做。es用supervisor跑。

5.怎么把mysql中的历史数据批量导入到es中,导入后怎么校验数据的准确性?

6.如果新增数据或者修改数据怎么保证es和mysql的双写,即数据一致性问题?

先写库,后写ES
7.es怎么和laravel框架结合?

composer 安装 https://www.elastic.co/guide/cn/elasticsearch/php/current/_installation_2.html

8.使用es后怎么保证和其它业务服务的隔离,防止es挂掉之后会影响到别的访问业务?

实际上,只有这个表单用了。

OK,开干

1.composer安装

2.封装一个单例。把curd方法写好。

3.es的index名就跟库名,type就跟那个商品表名一样。对应的商品操作写完。

4.脚本跑数据。灌入。

5.消息流消费的接口中。先入库后,入es。

数据的同步就是,在接口中,同步做了入库跟如es。
没有用Canal。技术用不用视情况而定。

kibana

对了kibana是个好东西。也装了。

用console查数据。另,如果你想看商品添加用图形观察什么时间新增了多少数据,也可以自己弄visualize。

【轻知识】对ElasticSearch的简单使用_第2张图片
image.png

参考资料:

  • 《Kibana 用户手册》https://www.elastic.co/guide/cn/kibana/current/index.html

  • 《Elasticsearch: 权威指南》https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

  • 《Elasticsearch Reference [6.0] 》https://www.elastic.co/guide/en/elasticsearch/reference/6.0/index.html

  • 《ElasticSearch + Canal 开发千万级的实时搜索系统》https://www.cnblogs.com/chanshuyi/p/6669006.html

你可能感兴趣的:(【轻知识】对ElasticSearch的简单使用)