天天看點

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檔案夾下的檔案全部删掉

繼續閱讀