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下

    ubuntu下elasticsearch5.x配置ik+pinyin+分布式

    然后在自己的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模拟插件,去谷歌插件中心添加即可)

ubuntu下elasticsearch5.x配置ik+pinyin+分布式

    在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下这样测试分词结果,哪怕是默认的分词器,也不能测,都会报错

ubuntu下elasticsearch5.x配置ik+pinyin+分布式


三 安装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]的错误,在同一个大版本内,修改对应版本配置


ubuntu下elasticsearch5.x配置ik+pinyin+分布式

   sudo vim   ./plugin-descriptor.properties 

    修改成对应的版本  

ubuntu下elasticsearch5.x配置ik+pinyin+分布式 

                elasticsearch.version = 5.3.3    自己的es版本        

            ubuntu下elasticsearch5.x配置ik+pinyin+分布式

                    改成对应的版本即可

)

            启动完毕后在postman中

用get请求  输入  http://esip:9200/index/_analyze?text=中华人民共和国&analyzer=pinyin

ubuntu下elasticsearch5.x配置ik+pinyin+分布式



四,搭建完全分布式集群

            为了方便,建议现在系统hosts文件中添加对应的ip

            sudo vim /etc/hosts

            添加   主节点的对应ip名称(在主节点所在的电脑)

                 10.0.0.30   esip

                  ubuntu下elasticsearch5.x配置ik+pinyin+分布式

              从节点电脑中添加     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插件中如下

ubuntu下elasticsearch5.x配置ik+pinyin+分布式


如果发现从节点报错 ,记得将从节点 data文件夹下的文件全部删掉