一、插件网址

https://github.com/medcl/elasticsearch-analysis-ik/

版本对应关系

IK version ES version
master 7.x -> master
6.x 6.x
5.x 5.x
1.10.6 2.4.6
1.9.5 2.3.5
1.8.1 2.2.1
1.7.0 2.1.1
1.5.0 2.0.0
1.2.6 1.0.0
1.2.5 0.90.x
1.1.3 0.20.x
1.0.0 0.16.2 -> 0.19.0

二、安装插件

三、测试插件分词效果

默认分词器

请求

  1. GET http://127.0.0.1:9200/user5/_analyze

参数

  1. {
  2. "text":"中华人民共和国"
  3. }

响应

  1. {
  2. "tokens": [
  3. {
  4. "token": "中",
  5. "start_offset": 0,
  6. "end_offset": 1,
  7. "type": "<IDEOGRAPHIC>",
  8. "position": 0
  9. },
  10. {
  11. "token": "华",
  12. "start_offset": 1,
  13. "end_offset": 2,
  14. "type": "<IDEOGRAPHIC>",
  15. "position": 1
  16. },
  17. {
  18. "token": "人",
  19. "start_offset": 2,
  20. "end_offset": 3,
  21. "type": "<IDEOGRAPHIC>",
  22. "position": 2
  23. },
  24. {
  25. "token": "民",
  26. "start_offset": 3,
  27. "end_offset": 4,
  28. "type": "<IDEOGRAPHIC>",
  29. "position": 3
  30. },
  31. {
  32. "token": "共",
  33. "start_offset": 4,
  34. "end_offset": 5,
  35. "type": "<IDEOGRAPHIC>",
  36. "position": 4
  37. },
  38. {
  39. "token": "和",
  40. "start_offset": 5,
  41. "end_offset": 6,
  42. "type": "<IDEOGRAPHIC>",
  43. "position": 5
  44. },
  45. {
  46. "token": "国",
  47. "start_offset": 6,
  48. "end_offset": 7,
  49. "type": "<IDEOGRAPHIC>",
  50. "position": 6
  51. }
  52. ]
  53. }

ik分词器

请求

  1. GET http://127.0.0.1:9200/user5/_analyze?analyzer=ik_max_word&pretty=true

参数

  1. {
  2. "text":"中华人民共和国"
  3. }

响应

  1. {
  2. "tokens": [
  3. {
  4. "token": "中华人民共和国",
  5. "start_offset": 0,
  6. "end_offset": 7,
  7. "type": "CN_WORD",
  8. "position": 0
  9. },
  10. {
  11. "token": "中华人民",
  12. "start_offset": 0,
  13. "end_offset": 4,
  14. "type": "CN_WORD",
  15. "position": 1
  16. },
  17. {
  18. "token": "中华",
  19. "start_offset": 0,
  20. "end_offset": 2,
  21. "type": "CN_WORD",
  22. "position": 2
  23. },
  24. {
  25. "token": "华人",
  26. "start_offset": 1,
  27. "end_offset": 3,
  28. "type": "CN_WORD",
  29. "position": 3
  30. },
  31. {
  32. "token": "人民共和国",
  33. "start_offset": 2,
  34. "end_offset": 7,
  35. "type": "CN_WORD",
  36. "position": 4
  37. },
  38. {
  39. "token": "人民",
  40. "start_offset": 2,
  41. "end_offset": 4,
  42. "type": "CN_WORD",
  43. "position": 5
  44. },
  45. {
  46. "token": "共和国",
  47. "start_offset": 4,
  48. "end_offset": 7,
  49. "type": "CN_WORD",
  50. "position": 6
  51. },
  52. {
  53. "token": "共和",
  54. "start_offset": 4,
  55. "end_offset": 6,
  56. "type": "CN_WORD",
  57. "position": 7
  58. },
  59. {
  60. "token": "国",
  61. "start_offset": 6,
  62. "end_offset": 7,
  63. "type": "CN_CHAR",
  64. "position": 8
  65. }
  66. ]
  67. }

四、ik分词器介绍

ik_max_word 和 ik_smart 什么区别?

  • ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query;*
  • ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询。