第一步:安装ElasticSearch 7.6.0
由于IK和ElasticSerach已经是编译好的,不需要编译,直接在安装解压修改配置文件即可
详情请见另一篇安装博客:https://www.cnblogs.com/haolb123/p/14051580.html
第二步:下载拼音分词器
由于拼音分词器并非编译好的,需要用Maven package 进行打包,maven的下载和使用请百度。
- pingying 下载地址: https://github.com/medcl/elasticsearch-analysis-pinyin
- 中文 分词器地址:https://github.com/medcl/elasticsearch-analysis-ik
- 选择完毕版本,进行选择Zip包链接进行下载
下载到本地,进行解压,解压完毕之后发现是源码Maven工程,进行mvn package,master版本对应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的文件夹下
- 重启ElasticSearch:systemctl restart elasticsearch.service
第三步:测试拼音分词器
创建索引
- PUT /medcl/
- {
- "settings" : {
- "analysis" : {
- "analyzer" : {
- "pinyin_analyzer" : {
- "tokenizer" : "my_pinyin"
- }
- },
- "tokenizer" : {
- "my_pinyin" : {
- "type" : "pinyin",
- "keep_separate_first_letter" : false,
- "keep_full_pinyin" : true,
- "keep_original" : true,
- "limit_first_letter_length" : 16,
- "lowercase" : true,
- "remove_duplicated_term" : true
- }
- }
- }
- }
- }
测试分析器,分析一个中文名字
- GET /medcl/_analyze
- {
- "text": ["郝利斌"],
- "analyzer": "pinyin_analyzer"
- }
返回查询结果
创建映射
- POST /medcl/_mapping
- {
- "properties": {
- "name": {
- "type": "keyword",
- "fields": {
- "pinyin": {
- "type": "text",
- "store": false,
- "term_vector": "with_offsets",
- "analyzer": "pinyin_analyzer",
- "boost": 10
- }
- }
- }
- }
- }
- #添加单条数据
- POST /medcl/_create/andy
- {"name":"刘德华"}
- #批量添加数据
- POST /medcl/_bulk
- {"index": {"_index": "medcl","_id": "1"}}
- {"name":"储之源"}
- {"index": {"_index": "medcl","_id": "2"}}
- {"name":"李根"}
- {"index": {"_index": "medcl","_id": "3"}}
- {"name":"赵阳"}
- {"index": {"_index": "medcl","_id": "4"}}
- {"name":"郝利斌"}
- {"index": {"_index": "medcl","_id": "5"}}
- {"name":"张旭"}
- {"index": {"_index": "medcl","_id": "6"}}
- {"name":"朱强"}
- {"index": {"_index": "medcl","_id": "7"}}
- {"name":"黄佳宁"}
- {"index": {"_index": "medcl","_id": "8"}}
- {"name":"袁晓军"}
- #根据条件查询
- GET /medcl/_search
- {
- "query": {
- "match": {
- "name.pinyin": "yxj"
- }
- }
- }
返回结果: