ubuntu下elasticsearch5.x配置ik+pinyin+分布式
elasticsearch5.x版本,分布式ik+pinyin分词器
一,安装es绑定局域网ip
elasticsearch目前的三大类版本,每个版本有不同,有很多博客是介绍的2.x版本的,但是2.x版本的官方不再维护,搭建完了以后,maven中也没有对应的jar,只能自己在url中测试(此博客只说关于java的,其他语言不知道)。点击打开链接选择es版本,如果你要经常用,基本上一定会用pinyin和ik分词,(默认的标准分词器用的是单个字分词)。推介下载5.3.3或者5.6.8只有这两个版本在git中的插件好用一点。
下载es后,在config/elasticsearch.yml中添加配置
http.cors.enabled: true
http.cors.allow-origin: "*"
以上两行是head插件的配置,5.x版本开始,head插件必须以新的进程的形式开启,
关于head插件的安装,请去搜其他的博客, head插件是用node.js写的,启动的时候npm 命令数据源最好用阿里的
数据源
cluster.name: fc 集群名称
node.name: master 节点名字
node.master: true 是否是集群主节点
network.host: 主节点的ip 单节点情况下如果不配,默认是绑定localhost
注意,如果要绑定除localhost外的其他ip,在5.x版本下会报错(2.x版本不会),需要修改如下配置
sudo vim /etc/security/limits.conf
soft nofile 65536 可打开的文件描述的最大数(软限制)
hard nofile 131072 可打开文件面熟的最大数(硬限制)
soft nproc 2048 单个用户可用的最大进程数(软限制)
hard nproc 4096 单个用户可用的最大进程数(软限制)
保存以后退出来
sysctl -p 刷新
在5.x版本下这个配置文件下如果不改,就不能配置ip地址,只能绑定127.0.0.1
配置完成后,进入elasticsearch/bin下,启动./elasticsearch 建议初期最好不要用守护进程,以便看到
它报的错误信息,然后会打印一个警告,但是集群还是能正确运行,关于内存大小设置的警告
输入 sudo vim /etc/sysctl.conf 添加
vm.max_map_count=655360 内存大小
保存以后退出来
sysctl -p 刷新
这样单机下就可以绑定ip不报错误
二,安装ik 中文分词器
https://github.com/medcl/elasticsearch-analysis-ik,下载ik分词插件。
解压或进入elasticsearch-analysis-ik-5.x ,然后用maven打包 命令是 mvn package
会在目录下生成target文件夹,进入target/releases 解压zip文件,ik分词器的jar和配置文件会在elasticsearch下
然后在自己的es的plugins(2.x版本的好像没有这个文件夹,要自己创建)下创建ik文件夹,然后将上面
elasticsearch-analysis-pinyin-5.x/target/releases/elasticsearch/ 下的文件都复制到ik下,
退出重启es 在postman中选择put请求 输入http://esip:9200/index 创建一个索引 其中esip是你绑定的ip地址
(postman是谷歌的一个http模拟插件,去谷歌插件中心添加即可)
在url下输入 http://esip:9200/index/_analyze?text=中华人民共和国&analyzer=ik_max_word
注意: 这里的参数,在2.x版本下analyzer只需要输入ik就行了,但是在5.x版本下必须要输入ik_max_word或者
ik_smart 否则会报错
"error": {
"root_cause": [{
"type": "remote_transport_exception",
"reason": "[master][10.0.0.30:9300][indices:admin/analyze[s]]"
}
],
"type": "illegal_argument_exception",
"reason": "failed to find analyzer [ik]"
},
"status": 400
在6.x版本下,不能在url 或者在postman下这样测试分词结果,哪怕是默认的分词器,也不能测,都会报错
三 安装pinyin插件
地址https://github.com/medcl/elasticsearch-analysis-pinyin 下载对应的5.x版本,安装过程和ik分词器一样,下载解压, 在 elasticsearch-analysis-pinyin-5.x 下 执行mvn package 打包 过程入ik
在plugins 下创建pinyin 文件夹,将/target/releases/elasticsearch内容全部复制进去, 重启es (注意,在安装.中,可能你下的插件是2.x版本,maven打包解压的是1.x版本,启动es的时候出现类似 Plugin [analysis-pinyin] is incompatible with Elasticsearch [5.3.3]. Was designed for version [5.3.5]的错误,在同一个大版本内,修改对应版本配置
sudo vim ./plugin-descriptor.properties
修改成对应的版本
elasticsearch.version = 5.3.3 自己的es版本
改成对应的版本即可
)
启动完毕后在postman中
用get请求 输入 http://esip:9200/index/_analyze?text=中华人民共和国&analyzer=pinyin
四,搭建完全分布式集群
为了方便,建议现在系统hosts文件中添加对应的ip
sudo vim /etc/hosts
添加 主节点的对应ip名称(在主节点所在的电脑)
10.0.0.30 esip
从节点电脑中添加 10.0.0.16
将已经安装好的单机es复制到其他电脑, 在修改confing/elasticsearch.yml 的配置
主节点对应配置如下, 主节点ip为 10.0.0.30 在hosts中配置了esip
一下两个是head插件跨域的参数
http.cors.enabled: true
http.cors.allow-origin: "*"cluster.name: fc 集群名字
node.name: master 节点名字
node.master: true 是否为主节点
node.data: true 该节点是否用来存储数据
network.host: esip 绑定主节点的ip
discovery.zen.ping.unicast.hosts: ["esip"] 在集群中的电脑的ip
首先在从节点电脑的 /etc/hosts中配置了 10.0.0.16 esslave
再去从节点的elasticsearch.yml中配置
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: fc 集群名字
node.name: salve 节点名字
node.master: false 是否为主节点
node.data: true 该节点是否用来存储数据
network.host: esip 绑定主节点的ip
discovery.zen.ping.unicast.hosts: [" esslave"] 在集群中的电脑的ip(自己的ip)
配置中的http.port用默认即可 ,如果要配置,主从节点不能用同一个端口,虽然不再同一台电脑上,但是也不能用相同的端口
先启动主节点,在启动从节点,head插件中如下
如果发现从节点报错 ,记得将从节点 data文件夹下的文件全部删掉