linux下elasticsearch和analysis-ik的安装配置

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

本文从零开始,讲解如何使用 Elastic 搭建自己的全文搜索引擎。每一步都有详细的说明,大家跟着做就能学会。

一、安装配置

安装elasticsearch需要java8 以上环境,如果你的机器还没安装java,需要先安装java,这里安装最新版的java10。

1)安装Java环境

java下载官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html

选中 Accept License Agreement,然后在 jdk-10.0.1_linux-x64_bin.rpm 上点击鼠标右键复制链接地址。

由于Oracle官网用Cookie限制下载方式,使得眼下只能用浏览器进行下载,使用其他方式可能会导致下载失败。但还是有方法可以在Linux进行下载的,本文以wget为例。

我们需要三个参数:–no-check-certificate、–no-cookies、–header;

  • –no-check-certificate:禁止检查证书
  • –no-cookies:禁用Cookies
  • –header:用于定义请求头信息

接下来我们就可以用wget命令愉快的下载了

1.1 通过wget命令下载:
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8c52526dc134031e/jdk-10.0.1_linux-x64_bin.rpm"
1.2 执行rpm命令安装:
# sudo rpm -ivh jdk-10.0.1_linux-x64_bin.rpm
1.3 查看是否安装成功:
# java -version

如上图,能够显示出版本信息就说明java安装成功啦,接下来就开始安装下载 elasticsearch。

2)安装elasticsearch

2.1 下载elasticsearch

Elasticsearch官网下载地址:http://www.elastic.co/downloads/elasticsearch

# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.rpm
2.2 安装elasticsearch
# sudo rpm -ivh elasticsearch-6.2.4.rpm
2.3 安装完elasticsearch后编辑配置项
# sudo vim /etc/elasticsearch/elasticsearch.yml

去掉下面三行前面的注释,并把 network.host 改成 localhost

  • bootstrap.memory_lock: true
  • network.host: 192.168.0.1
  • http.port: 9200

2.4 启动elasticsearch
# sudo systemctl daemon-reload
# sudo systemctl enable elasticsearch.service
# sudo systemctl start elasticsearch

elasticsearch启动时会有点慢,我们需要稍等片刻;待elasticsearch启动成功后,我们查看端口是否启动成功,执行命令:netstat -lnp | grep 9200

可以看到端口启动启动了,接着测试一下elasticsearch状态是否正常

# curl 'http://localhost:9200'

至此elasticsearch已经安装成功了。

然而问题又来了,如果直接使用Elasticsearch处理中文内容的搜索时,肯定会遇到很尴尬的问题——中文词语被分成了一个一个的汉字。这是由于 Elasticsearch 语言分析器上的限制,它并不能友好的处理所有语言,特别是中文。

先演示走一波

# curl -H 'Content-Type: application/json'  -XGET 'http://localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_max_word","text":"加藤非技术博客"}'

这种情况下,我们就需要额外的中文分词器来协助我们了。
本文将演示使用和 elasticsearch 配套的 ik-analyzer 插件来帮助我们实现中文分词。

3)安装IK Analysis

3.1 下载安装

如果 Elasticsearch 是 5.5.1 以上的版本,可以使用 elasticsearch-plugin 来安装,安装方式如下:

# /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip

需要注意的是,IK Analysis版本需要对应 Elasticsearch 的版本,否则可能会安装失败。

3.2 安装完后重新启动 Elasticsearch
# sudo systemctl restart elasticsearch

再测试一下,看看使用了ik-analyzer插件的效果:

从上图可以看到'技术'和'博客'两个词语已经成功组合到了一起;
但是‘加藤非’的大名却被拆开了,这显然不符合我的预期,继续下一波操作。

3.3 自定义词库

修改ik的配置文件 /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml,在其中指定自定义的dic文件,这里命名为jiatengfei.dic。

# sudo vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml

添加我们需要保留的词语‘加藤非’到词库,

# echo '加藤非' > /etc/elasticsearch/analysis-ik/jiatengfei.dic

注意: jiatengfei.dic 这个文件在linux中可以直接vi命令来编辑,在文件中添加需要保留的词语即可,每一个词语占一行;修改后,需要再重启一下 elasticsearch

# sudo systemctl restart elasticsearch

最后再执行下面命令查看分词效果,123走起~~~

# curl -H 'Content-Type: application/json'  -XGET 'http://localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_max_word","text":"加藤非技术博客"}'

可以看出,我们在自定义词库jiatengfei.dic里的自定义词‘加藤非’,成功被看作是一个词整体切分出来,说明成功了!!

温馨提示:Github上已经有人封装好了elasticsearch中文发行版,针对中文集成了相关插件,方便新手学习测试。

送上github链接:https://github.com/medcl/elasticsearch-rtf

这篇文章就先到这里了,喜欢就点个赞吧。

102 人推荐

声明:本文原创发布于加藤非博客,转载请注明出处:加藤非博客 jiatengfei.com 。如有侵权,请联系本站删除。

加藤非博客
请先登录再发表评论
  • 最新评论

  • 总共1条评论
加藤非博客

加藤非:ElasticSearch是一个基于Lucene的搜索服务器

2018-06-11 17:04:25 回复