sphinx和elasticseach使用感受

    公司项目需要,要将mysql数据库中的数据快速检索并分词。

    开始使用的是sphinx,这个搜索引擎安装,配置,使用,都比较简单,无需安装其他插件,相对来说功能比较单一。

    对于新增记录,我的处理方法是添加增量索引,定期合并到主索引,这导致索引体积越来越大。由于sphinx在运行时是将这些索引放在内存里的,如果索引体积超出内存容量,会导致报错无法执行,所以如果想用sphinx做搜索引擎的话,请务必做好事先规划。

    sphinx的分词器用的是coreseek,作者前段时间网站停了几个月,万幸现在又可以使用了,感谢他们的无私奉献。

    sphinx的资料国内较少,这算是一个遗憾。

    之后经过讨论,决定将搜索引擎改为elasticsearch,简称ES。

    ES的安装配置就很麻烦了,而且它最经常使用的地方是和logstash、kibana一起组成ELK,处理日志,想将mysql中的数据导入,需要借助其他工具。

    我个人使用的是logstash的组件input,这种方法对于数据库的删除操作,很难处理。比较看好国人的一个项目,根据mysqldump动态更新,等我有空用过之后,再行评论。

    ES比较赞的是分布式功能,分片自动调整,这个正确设置的话,很好用。

    缺陷的话ES的安全方面不是很好,虽然5.0版本后有x-pack支持,但也使安装配置麻烦了很多。

    分词用的是ik,我比较习惯粗粒度,细粒度导致索引体积过大了。

    总结一下:sphinx安装配置简单,功能单一,但性能不差,个人比较推荐作为mysql的插件来安装使用(还未有时间尝试)。ES呢,安装配置复杂了很多,功能比较强大,分布式可以进行很多细微调整,就是安全性和传统数据库导入不是很容易,不出意外的话,我最后用的就是ES了。

posted @ 2016-12-29 12:30  AHIK  阅读(6256)  评论(0编辑  收藏  举报