ElasticSerach7.6.0拼音分词器安装和使用

第一步:安装ElasticSearch 7.6.0

由于IK和ElasticSerach已经是编译好的,不需要编译,直接在安装解压修改配置文件即可

详情请见另一篇安装博客:https://www.cnblogs.com/haolb123/p/14051580.html

 

第二步:下载拼音分词器

由于拼音分词器并非编译好的,需要用Maven package 进行打包,maven的下载和使用请百度。

  • 选择完毕版本,进行选择Zip包链接进行下载 

下载到本地,进行解压,解压完毕之后发现是源码Maven工程,进行mvn packagemaster版本对应Es7.X,默认打包出来是7.7.0,我的es版本是7.6.0

所以要修改C:UsersAdministratorDownloadselasticsearch-analysis-pinyin-masterelasticsearch-analysis-pinyin-masterpom.xml的文件。修改后如下:

 

  • 执行打包命令:mvn package

 

  • 打包完成后编译后的包在target/releases目录下的elasticsearch-analysis-pinyin-7.6.0.zip

 

  • 将编译好的zip包进行解压,进行拷贝,上传到ElasticSerach plugins的文件夹下

 

  • 重启ElasticSearchsystemctl restart elasticsearch.service

 

第三步:测试拼音分词器

  • 创建索引

  1. PUT /medcl/
  2. {
  3.     "settings" : {
  4.         "analysis" : {
  5.             "analyzer" : {
  6.                 "pinyin_analyzer" : {
  7.                     "tokenizer" : "my_pinyin"
  8.                     }
  9.             },
  10.             "tokenizer" : {
  11.                 "my_pinyin" : {
  12.                     "type" : "pinyin",
  13.                     "keep_separate_first_letter" : false,
  14.                     "keep_full_pinyin" : true,
  15.                     "keep_original" : true,
  16.                     "limit_first_letter_length" : 16,
  17.                     "lowercase" : true,
  18.                     "remove_duplicated_term" : true
  19.                 }
  20.             }
  21.         }
  22.     }
  23. }
  • 测试分析器,分析一个中文名字

  1. GET /medcl/_analyze
  2. {
  3.   "text": ["郝利斌"],
  4.   "analyzer": "pinyin_analyzer"
  5. }

返回查询结果

  • 创建映射

  1. POST /medcl/_mapping
  2. {
  3.   "properties": {
  4.     "name": {
  5.       "type": "keyword",
  6.       "fields": {
  7.         "pinyin": {
  8.           "type": "text",
  9.           "store": false,
  10.           "term_vector": "with_offsets",
  11.           "analyzer": "pinyin_analyzer",
  12.           "boost": 10
  13.         }
  14.       }
  15.     }
  16.   }
  17. }

 

  1. #添加单条数据
  2. POST /medcl/_create/andy
  3. {"name":"刘德华"}
  4.  
  5. #批量添加数据
  6. POST /medcl/_bulk
  7. {"index": {"_index": "medcl","_id": "1"}}
  8. {"name":"储之源"}
  9. {"index": {"_index": "medcl","_id": "2"}}
  10. {"name":"李根"}
  11. {"index": {"_index": "medcl","_id": "3"}}
  12. {"name":"赵阳"}
  13. {"index": {"_index": "medcl","_id": "4"}}
  14. {"name":"郝利斌"}
  15. {"index": {"_index": "medcl","_id": "5"}}
  16. {"name":"张旭"}
  17. {"index": {"_index": "medcl","_id": "6"}}
  18. {"name":"朱强"}
  19. {"index": {"_index": "medcl","_id": "7"}}
  20. {"name":"黄佳宁"}
  21. {"index": {"_index": "medcl","_id": "8"}}
  22. {"name":"袁晓军"}

 

  1. #根据条件查询
  2. GET /medcl/_search
  3. {
  4.   "query": {
  5.     "match": {
  6.       "name.pinyin": "yxj"
  7.     }
  8.   }
  9. }

返回结果:

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/haolb123/p/14109337.html