ElasticSearch安裝拼音插件(pinyin)


環境介紹

集群環境如下:

  • Ubuntu14.04
  • ElasticSearch 2.3.1(3節點)
  • JDK1.8.0_60

開發環境:

  • Windows10
  • JDK 1.8.0_66
  • Maven 3.3.3
  • Intellij IDEA 2016.1

下載編譯Pinyin

  • clone elasticsearch-analysis-pinyin
    通過IntelliJ從git上克隆elasticsearch-analysis-pinyin工程
  • 修改ES版本
    下載完項目后修改項目根目錄下pom.xml文件中的properties/elasticsearch.version節點值為2.3.1,以確保編譯后的版本兼容ES2.3.1版本;
  • 編譯
    打開IntelliJ Terminal工具,輸入以下命令:
    mvn clean install -Dmaven.test.skip
    可以在項目目錄elasticsearch-analysis-pinyin\target\releases看到編譯后的結果elasticsearch-analysis-pinyin-1.7.4.zip,以及elasticsearch-analysis-pinyin\target目錄下的elasticsearch-analysis-pinyin-1.7.4.jar。
    這里我們主要使用zip包。

安裝部署

  • 安裝
    在ES服務器每個節點的${ES_HOME}/plugins目錄下新建文件夾,名為pinyin;
    解壓上述zip壓縮包,可見三個文件elasticsearch-analysis-pinyin-1.7.4.jar、plugin-descriptor.properties、pinyin4j-2.5.0.jar,將其上傳到ES服務器pinyin文件夾內即可;
  • 重啟
    節點安裝完pinyin插件后,需要重啟生效。
  • 多節點集群
    ES集群每個節點都進行上述安裝。

測試

分詞測試

  • 建立測試索引
    建立一個測試分詞效果的索引medcl,在節點終端執行如下代碼:
  1. curl -XPUT http://localhost:9200/medcl/-d'
  2. {
  3. "index" : {
  4. "analysis" : {
  5. "analyzer" : {
  6. "pinyin_analyzer" : {
  7. "tokenizer" : "my_pinyin",
  8. "filter" : ["standard"]
  9. }
  10. },
  11. "tokenizer" : {
  12. "my_pinyin" : {
  13. "type" : "pinyin",
  14. "first_letter" : "none",
  15. "padding_char" : " "
  16. }
  17. }
  18. }
  19. }
  20. }'
  • 通過瀏覽器測試分詞
  1. http://10.110.13.144:9200/medcl/_analyze?text=%E5%88%98%E5%BE%B7%E5%8D%8E&analyzer=pinyin_analyzer

若測試成功,瀏覽器返回結果如下:

  1. {"tokens":[{"token":"liudehua","start_offset":0,"end_offset":3,"type":"word","position":0}]}

建立拼音索引

  • 建立索引並設置分詞
  1. curl -XPOST http://localhost:9200/medcl/_close
  2. curl -XPUT http://localhost:9200/medcl/_settings -d'
  3. {
  4. "index" : {
  5. "analysis" : {
  6. "analyzer" : {
  7. "pinyin_analyzer" : {
  8. "tokenizer" : "my_pinyin",
  9. "filter" : ["standard"],
  10. "type":"pinyin"
  11. }
  12. },
  13. "tokenizer" : {
  14. "my_pinyin" : {
  15. "type" : "pinyin",
  16. "first_letter" : "none",
  17. "padding_char" : " "
  18. }
  19. }
  20. }
  21. }
  22. }'
  23. curl -XPOST http://localhost:9200/medcl/_open
  • 建立mapping
  1. curl -XPOST http://localhost:9200/medcl/folks/_mapping -d'
  2. {
  3. "folks": {
  4. "properties": {
  5. "name": {
  6. "type": "multi_field",
  7. "fields": {
  8. "name": {
  9. "type": "string",
  10. "store": "no",
  11. "term_vector": "with_positions_offsets",
  12. "analyzer": "pinyin_analyzer",
  13. "boost": 10
  14. },
  15. "primitive": {
  16. "type": "string",
  17. "store": "yes",
  18. "analyzer": "keyword"
  19. }
  20. }
  21. }
  22. }
  23. }
  24. }'
  • 上傳數據
  1. curl -XPOST http://localhost:9200/medcl/folks/andy -d'{"name":"劉德華"}'
  • 在瀏覽器請求檢索
  1. http://10.110.13.144:9200/medcl/folks/_search?q=name:liudehua

若檢索成功,瀏覽器返回以下結果:

  1. {"took":9,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":3.0685282,"hits":[{"_index":"pinyin","_type":"test","_id":"andy","_score":3.0685282,"_source":{"name":"劉德華"}}]}}

參考資料





附件列表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM