当前位置:   article > 正文

elasticsearch 使用 ik分词器_elasticsearch ik分词器

elasticsearch ik分词器

elasticsearch全文搜索中,如果需要用到中文分词,可以选择默认的分词器,但是默认分词器的分词效果不太好,我们可以选择ik分词器。

ik分词器支持的版本,目前我们基本都是根据elasticsearch 的版本选择对应的ik分词器版本,

目前使用elasticsearch-7.16.0, 那么分词器也选择7.16.0,下面是对应的版本选择

es常用数据类型

字段的数据类型由字段的属性type指定,ElasticSearch支持的基础数据类型主要有:

  • 字符串类型:keyword和text。(在5.0之后更改,原来为string)。
  • 数值类型:字节(byte)、2字节(short)、4字节(integer)、8字节(long)、float、double;
  • 布尔类型:boolean,值是true或false;
  • 时间/日期类型:date,用于存储日期和时间;
  • 二进制类型:binary;
  • IP地址类型:ip,以字符串形式存储IPv4地址;
  • 特殊数据类型:token_count,用于存储索引的字数信息

 安装ik分词器有两种方法

1、直接下载 对应分词器压缩包 然后解压到对应目录,安装完成后重启es

  1. cd /data/es/elasticsearch-7.16.0-node-1/plugins/
  2. mkdir ik
  3. cd ik
  4. wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.16.0/elasticsearch-analysis-ik-7.16.0.zip
  5. unzip elasticsearch-analysis-ik-7.16.0.zip

2、使用 elasticsearch-plugin 安装(从 v5.5.1 版本支持),安装完成重启es

  1. cd /data/es/elasticsearch-7.16.0-node-1/
  2. ./bin/elasticsearch-plugin install wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.16.0/elasticsearch-analysis-ik-7.16.0.zip

测试分词器

  1. {
  2. "analyzer" : "ik_max_word",
  3. "text": "河北省石家庄市高新区虚度大道"
  4. }

返回结果:

  1. {
  2. "tokens": [
  3. {
  4. "token": "河北省",
  5. "start_offset": 0,
  6. "end_offset": 3,
  7. "type": "CN_WORD",
  8. "position": 0
  9. },
  10. {
  11. "token": "河北",
  12. "start_offset": 0,
  13. "end_offset": 2,
  14. "type": "CN_WORD",
  15. "position": 1
  16. },
  17. {
  18. "token": "省",
  19. "start_offset": 2,
  20. "end_offset": 3,
  21. "type": "CN_CHAR",
  22. "position": 2
  23. },
  24. {
  25. "token": "石家庄市",
  26. "start_offset": 3,
  27. "end_offset": 7,
  28. "type": "CN_WORD",
  29. "position": 3
  30. },
  31. {
  32. "token": "石家庄",
  33. "start_offset": 3,
  34. "end_offset": 6,
  35. "type": "CN_WORD",
  36. "position": 4
  37. },
  38. {
  39. "token": "家庄",
  40. "start_offset": 4,
  41. "end_offset": 6,
  42. "type": "CN_WORD",
  43. "position": 5
  44. },
  45. {
  46. "token": "市",
  47. "start_offset": 6,
  48. "end_offset": 7,
  49. "type": "CN_CHAR",
  50. "position": 6
  51. },
  52. {
  53. "token": "高新区",
  54. "start_offset": 7,
  55. "end_offset": 10,
  56. "type": "CN_WORD",
  57. "position": 7
  58. },
  59. {
  60. "token": "高新",
  61. "start_offset": 7,
  62. "end_offset": 9,
  63. "type": "CN_WORD",
  64. "position": 8
  65. },
  66. {
  67. "token": "新区",
  68. "start_offset": 8,
  69. "end_offset": 10,
  70. "type": "CN_WORD",
  71. "position": 9
  72. },
  73. {
  74. "token": "虚度",
  75. "start_offset": 10,
  76. "end_offset": 12,
  77. "type": "CN_WORD",
  78. "position": 10
  79. },
  80. {
  81. "token": "大道",
  82. "start_offset": 12,
  83. "end_offset": 14,
  84. "type": "CN_WORD",
  85. "position": 11
  86. }
  87. ]
  88. }

在使用ElasticSearch的时候,我们会牵扯到很多的请求方法,比如GET,POST,PUT,DELETE等等,这些方法使用的都是Restful的调用风格,我们来简单介绍下这些方法

  • GET 请求:获取服务器中的对象
    • 相当于SQL的Select命令
    • GET /test_analysis 获取所有的test_analysis信息,默认查询10条
  • POST 请求:在服务器上更新对象
    • 相当于SQL的update命令
    • POST /test_analysis/1 更新id为1的test_analysis的信息
  • PUT 请求:在服务器上创建对象
    • 相当于SQL的create命令
    • PUT /test_analysis/id 创建一个id为xx的数据
  • DELETE 请求:删除服务器中的对象HEAD 请求:仅仅用于获取对象的基础信息
    • 相当于sql中的delete命令
    • DELETE /test_analysis/1 删除id为1的数据

创建索引并指定分词器

http://127.0.0.1:9200/test_analysis?pretty

  1. PUT /test_analysis
  2. {
  3. "mappings": {
  4. "properties": {
  5. "content": {
  6. "type": "text",
  7. "analyzer": "ik_max_word",
  8. "search_analyzer": "ik_smart"
  9. }
  10. }
  11. }
  12. }

查看索引映射:

curl http://127.0.0.1:9200/test_analysis/_mapping?pretty

删除索引

curl -X DELETE 'http://127.0.0.1:9200/test_analysis?pretty=null'

新增数据

  1. curl -X GET 'http://elastic:dsydnn@127.0.0.1:9200/test_analysis/_doc?pretty=null' \
  2. -H 'Content-Type: application/json' \
  3. -d '
  4. {
  5. "content" : "我是中国人"
  6. }'

 查询:

  1. curl -X GET 'http://127.0.0.1:9200/test_analysis/_search?pretty=null' \
  2. -H'Content-Type: application/json' \
  3. -d '{
  4. "query": {
  5. "bool": {
  6. "must": [
  7. {
  8. "term": {
  9. "content": "中"
  10. }
  11. }
  12. ]
  13. }
  14. }
  15. }'

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/966435
推荐阅读
相关标签
  

闽ICP备14008679号