<div id="content_views" class="markdown_views"> <!-- flowchart 箭頭圖標 勿刪 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <blockquote> <p>ElasticSearch5.3安裝IK分詞器</p> </blockquote>java
<p>以前使用Elasticsearch安裝head插件成功了,可是安裝IK分詞器卻失敗了。貌似是ElasticSearch5.0之後就不支持直接在elasticsearch.yml中配置IK了。緣由下面會說明。 <br> 首先下載: <br> <a href="https://www.elastic.co/downloads/elasticsearch" rel="nofollow" data-token="9f4ffd2c9982ccb2d6353c5c2248a2e3">https://www.elastic.co/downloads/elasticsearch</a> <br> <a href="https://github.com/medcl/elasticsearch-analysis-ik" rel="nofollow" data-token="0e8290e98b1edb53e7e9c1ed894c102f">https://github.com/medcl/elasticsearch-analysis-ik</a> <br> ,最新版本貌似是5.3 了。</p>node
<p>第一步 預處理:</p>git
<ol> <li>解壓elasticsearch-5.3.0.zip>D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0</li> <li>解壓elasticsearch-analysis-ik-5.3.0>D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0</li> <li>編譯elasticsearch-analysis-ik插件 cmd>D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0>mvn clean package</li> </ol>github
<p>第二步 配置:</p>web
<ol> <li><p>IK配置,以下圖是IK分詞器config目錄下的配置D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0\config <br> <img src="https://img-blog.csdn.net/20170417173007224?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""></p></li> <li><p>在D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\config目錄中新建ik文件夾,把上圖中的IK配置文件放入ElasticSearch目錄中的D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\config\ik目錄下</p></li> </ol>bootstrap
<p><img src="https://img-blog.csdn.net/20170417173203262?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""> <br> ik裏面的內容就是 第二步:1.IK配置 裏面的配置。 <br> 3. 配置IK分詞器 <br> 下圖是經過mvn命令編譯後生成的zip包 <br> <img src="https://img-blog.csdn.net/20170417173407402?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""></p>windows
<p>將上圖中的zip包放入D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\plugins\ik (ps:ik目錄沒有的話本身新建一個就好),進行解壓 <br> 結果以下圖所示:</p>瀏覽器
<p><img src="https://img-blog.csdn.net/20170417172939801?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""> <br> 整個安裝就完成了。</p>markdown
<p>第三步 測試: <br> 1. 修改elasticsearch.yml中的配置 <br> 設置cluster.name,node.name,同時解開這兩個配置的註釋 <br> 設置http.port:9200,其餘不須要增長配置了 <br> 2. windows下雙擊D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\bin\elasticsearch.bat <br> 不報錯說明安裝成功。 <br> <img src="https://img-blog.csdn.net/20170417173532216?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""> <br> 3. 安裝Http鏈接訪問工具,好比火狐插件httpRequester,安裝完成後會在火狐瀏覽器右上角出現插件的標示。 <br> 4. 建立索引 <br> <img src="https://img-blog.csdn.net/20170417173642202?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""></p>app
<pre class="prettyprint" name="code"><code class="hljs livecodeserver has-numbering" onclick="mdcp.signin(event)" style="position: unset;">content <span class="hljs-built_in">to</span> <span class="hljs-built_in">send</span>: { <span class="hljs-string">"settings"</span> : { <span class="hljs-string">"analysis"</span> : { <span class="hljs-string">"analyzer"</span> : { <span class="hljs-string">"ik"</span> : { <span class="hljs-string">"tokenizer"</span> : <span class="hljs-string">"ik_smart"</span> } } } }, <span class="hljs-string">"mappings"</span> : { <span class="hljs-string">"logs"</span> : { <span class="hljs-string">"dynamic"</span> : <span class="hljs-constant">true</span>, <span class="hljs-string">"properties"</span> : { <span class="hljs-string">"message"</span> : { <span class="hljs-string">"type"</span> : <span class="hljs-string">"string"</span>, <span class="hljs-string">"analyzer"</span> : <span class="hljs-string">"ik_smart"</span> } } } } } <div class="hljs-button signin" data-title="登陸後複製"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li></ul></pre>
<p>點擊Put按鈕,出現圖右邊的返回值,說明建立索引成功。 <br> 5. 進行分詞測試: <br> <img src="https://img-blog.csdn.net/20170417173755658?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""></p>
<p><img src="https://img-blog.csdn.net/20170417173816031?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""></p>
<blockquote> <p>安裝過程遇到的坑: <br> 1.將網上對使用IK的配置放到elasticsearch.yml中就會報以下的錯誤: <br> org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: node settings must not contain any index level settings <br> 這個不管怎麼想都不明白,並且網上尚未幾我的遇到過這種狀況。</p> </blockquote>
<p>2.Caused by: java.lang.IllegalStateException: jar hell! <br> 將IK編譯出來的jar,和source.jar兩個文件放入elasticsearch的lib裏後就出現了,有人說是版本問題,可是我選擇的二者都是最新版本,而且對應。這裏是由於lib裏面有IK了,而後elasticsearch去讀取plugin文件夾下的插件的時候又裝載了一次,因而就出現了這個問題。將lib裏的IK jar包刪除,改從plugins里加載就沒有問題了。網上也有很多是這樣作的,可是確實這麼作不正確。 <br> 在D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\logs會看到相應的錯誤日誌。 <br> 3. Exception in thread 「main」 java.lang.IllegalStateException: Could not load plugin descriptor for existing plugin [analysis-ik]. Was the plugin built before 2.0? <br> Likely root cause: java.nio.file.NoSuchFileException: /home/es/es2/plugins/analysis-ik/plugin-descriptor.properties <br> 出現上面的異常是我一開始把編譯出來的jar包放入D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\plugins\ik裏面了,實際上是要把D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0\target\releases\elasticsearch-analysis-ik-5.3.0.zip解壓到那個ik目錄下面。 <br> 4. 爲何沒有在elasticsearch.yml配置IK相關的分詞屬性呢 <br> 5. 在github上 <a href="https://github.com/medcl/elasticsearch-analysis-ik" rel="nofollow" data-token="0e8290e98b1edb53e7e9c1ed894c102f">https://github.com/medcl/elasticsearch-analysis-ik</a>的使用文檔說了: <br> <img src="https://img-blog.csdn.net/20170417173901438?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUwNDA2NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="這裏寫圖片描述" title=""></p>
<p>5.0.0及其之後就不會上面兩個分詞器了,而使用兩個參數去替代,同時根據上面的使用文檔來講,做者也沒有說明要針對IK配置elasticsearch.yml。 <br> 整體來講仍是遇到必定坎坷的,網上不少ES的文章對於新版本都不適用了。我重新將5.0.0的安裝環境所有刪除而後引入最新版本,才搞定了IK分詞器。最新版本的ES安裝head插件應該沒有什麼問題了,畢竟head也沒有要求要對5.0.0之後的版本進行安裝配置的改動。</p> 原文地址:https://blog.csdn.net/u010504064/article/details/70214040 </div>