最近因为需要,在项目里加入ElasticSearch,总结一下这个无痛教程。
1、 安装elasticsearch-rtf
这是个好东西,已经集成常用的插件(不要忘记要装个JDK,不然ElasticSearch就启动不了),安装完成后就启动这个东东。
如果你想加到系统启动,就要看看bin/service/elasticsearch的命令说明。
2、在Rails项目中加入elasticsearch-rails
在Gemfile
加入:
1 | gem 'elasticsearch-model' |
bundle
之
3、建立查找索引
这里我有个Post的Model(有几千条记录),有个title的字段,现在我需要ElasticSearch为title字段建立索引,以便查找:
1 | class Post < ActiveRecord::Base |
Import数据,我用的是官方的Rake Tasks,以Post为例就是这样子:
1 | rake environment elasticsearch:import:model CLASS='Post' FORCE=y |
如果在Production环境:
1 | RAILS_ENV=production rake environment elasticsearch:import:model CLASS='Post' FORCE=y |
而新加入的数据就会有Callback调用加入索引,这就不用我们操心了。
4、中文分词
elasticsearch-rtf里的elasticsearch.yml文件默认是用keyword
的,按照我的理解是,需要全部匹配。
例如有个title叫abc
,如果你用a
来搜是搜不出来的。所以这里我会改为mmseg
,这样就会自动帮我们分词了。(记得重启ElasticSearch)
5、测试
Post.search('blabla')
来试试看: )
6、最后
这只是一个无痛的最最基本的能让ElasticSearch加入到我们Rails项目中的指导,ElasticSearch还有好多好牛的东西(我暂时也没有这个需要),请移动到guide。例如你可能需要为搜索后的结果进行一定的排序之类。
EOF