天天看點

elasticsearch6.2.3 安裝以及配置IK 使用

雖然es在配置上要比solr簡單許多,也更加靈活,基本上沒有什麼多餘的配置,官網下載下傳好後就可以直接使用,附一個下載下傳位址https://www.elastic.co/downloads/past-releases

注意:ES版本差異賊大,是以盡量保證版本一緻

在測試中,所有的示範我均通過HTTP來請求,測試工具我采用postman

首先将官方下載下傳的ES解壓一下我們可以看到如下目錄(linux下大同小異),

elasticsearch6.2.3 安裝以及配置IK 使用

然後我們通過指令行進入bin目錄下執行elasticsearch指令,ES就完美運作了,位址欄中輸入127.0.0.1:9200就可以看到如下界面,說明運作成功。

elasticsearch6.2.3 安裝以及配置IK 使用

看到這裡是不是感覺很簡單呢,,,下面我們來進行安裝bug練習,,,不對,是安裝ik分詞器。

首先先說一下為什麼要分詞,我們随便找一段英語看一下他的分詞效果,可以看到分詞效果相對來說還是不錯的

elasticsearch6.2.3 安裝以及配置IK 使用

但是呢我們換成中文試一下,同樣的查詢條件,同樣的HTTP請求,漢字卻被拆分成一個一個的文字了

elasticsearch6.2.3 安裝以及配置IK 使用
elasticsearch6.2.3 安裝以及配置IK 使用

很明顯,這并不是我們想要的效果,是以我們需要安裝一個支援中文的分詞器,這裡我們可以使用ik進行分詞,附IK位址https://github.com/medcl/elasticsearch-analysis-ik

版本号與ES一緻,版本号與ES一緻,版本号與ES一緻

重要的事情說三次,隻要差一個小版本ik就不能用了,首先,我們解壓下載下傳好的壓縮檔案,然後在ik的根目錄下(包含pom.xml)執行mvn install 指令(下載下傳依賴),不過需要提前安裝maven,maven安裝并不難大家可以在網上搜尋一下,然後将生成的\target\releases\elasticsearch-analysis-ik-6.2.3.zip解壓到ES的plugins\ik目錄下,直接啟動ES,不需要加配置檔案,之前的ES中需要加配置檔案,但這個版本并不需要。

我們嘗試運作一下,我将請求體換成了:

{   
    "analyzer": "ik_max_word",
    "text":"看到這裡是不是感覺很簡單呢" 
}
           

展示效果:

{
  "tokens": [
    {
      "token": "看到",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "這裡是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "這裡",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "是不是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "不是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "感覺",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "很簡單",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "簡單",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "呢",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_CHAR",
      "position": 
    }
  ]
}
           

ik有兩種模式,上面的方式為最大方式,它會勁量詳細的拆分,我們看到,“很簡單”算一個詞組,簡單也算一個詞組,而另一種方式為ik_smart方式

請求體:

{   
    "analyzer": "ik_smart",
    "text":"看到這裡是不是感覺很簡單呢" 
}
           

結果 :可以看到他隻要分詞過的字元就不會參與到下一次分詞中了

{
  "tokens": [
    {
      "token": "看到",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "這裡",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "是不是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "感覺",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "很簡單",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "呢",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_CHAR",
      "position": 
    }
  ]
}
           

好了這就是關于elasticsearch安裝以及IK的流程,由于篇幅太長,後續我會發表,增删改查java用戶端,head等部落格

繼續閱讀