介绍做的一个电商的搜索引擎
使用elk作为后台架构,elastic提供搜索的接口,logstash作为mysql和elastic之间数据同步的桥梁
其实这个只是常用引擎的第一步,一般的搜索引擎为了提高用户的点击率,在得到所有相关的物品之后,会进一步输入到一个模型当中,包含了用户的使用行为等参数,最后根据用户可能的购买率进行排序。
参考wide&deep模型:https://zhuanlan.zhihu.com/p/29640272
logstash配置
logstash的基本安装和配置可以参考logstash的文章
如何做数据同步参考这边文章
https://zhuanlan.zhihu.com/p/40177683
logstash 每次只同步更新一条数据的问题
https://stackoverflow.com/questions/41418060/logstash-is-indexing-only-one-row-of-select-query-from-mysql-to-elastic-search
配置的参数的官方文档:
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html
完整的logstash的配置
初始化时候的配置,logstash-es-mysql.conf
启动logstash:
./bin/logstash -f logstash-es-mysql.conf
启动之前首先创建索引,因为要使用中文的分词器
先安装中文分词器的插件
https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-smartcn.html
删除已有的索引(存在的话):
DELETE /manzuo_list
设置新索引的analyzer:
启动logstash去同步数据:
./bin/logstash -f logstash-es-mysql.conf
搜索:
参考中文教程
https://www.elastic.co/cn/blog/how-to-search-ch-jp-kr-part-1
存在的问题
这样的配置只能做到mysql中的新数据向es中去追加
一旦mysql删除了老数据,es并不会同步去删除