自定义词库

比如我们要把刘强东算作一个词
修改/usr/local/elasticsearch/plugins/ik/config中的IKAnalyzer.cfg.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
  3. <properties>
  4. <comment>IK Analyzer 扩展配置</comment>
  5. <!--用户可以在这里配置自己的扩展字典 -->
  6. <entry key="ext_dict"></entry>
  7. <!--用户可以在这里配置自己的扩展停止词字典-->
  8. <entry key="ext_stopwords"></entry>
  9. <!--用户可以在这里配置远程扩展字典 -->
  10. <entry key="remote_ext_dict">http://192.168.11.129/es/fenci.txt</entry>
  11. <!--用户可以在这里配置远程扩展停止词字典-->
  12. <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
  13. </properties>

修改完成后,需要重启elasticsearch容器,否则修改不生效。docker restart elasticsearch
更新完成后,es只会对于新增的数据用更新分词。历史数据是不会重新分词的。如果想要历史数据重新分词,需要执行:
POST my_index/_update_by_query?conflicts=proceed

远程词库位置

  1. 安装Nginx
  2. 随便启动一个nginx实例,只是为了复制出配置
  3. docker run -p 80:80 --name nginx -d nginx:1.10
  4. 将容器内的配置文件拷贝到/usr/local/nginx/conf/
  5. mkdir -p /usr/local/nginx/html
  6. mkdir -p /usr/local/nginx/logs
  7. mkdir -p /usr/local/nginx/conf
  8. docker container cp nginx:/etc/nginx/* /usr/local/nginx/conf/
  9. #由于拷贝完成后会在config中存在一个nginx文件夹,所以需要将它的内容移动到conf
  10. mv /usr/local/nginx/conf/nginx/* /usr/local/nginx/conf/
  11. rm -rf /usr/local/nginx/conf/nginx
  12. 终止原容器:
  13. docker stop nginx
  14. 执行命令删除原容器:
  15. docker rm nginx
  16. 创建新的Nginx,执行以下命令
  17. docker run -p 80:80 --name nginx \
  18. -v /usr/local/nginx/html:/usr/share/nginx/html \
  19. -v /usr/local/nginx/logs:/var/log/nginx \
  20. -v /usr/local/nginx/conf/:/etc/nginx \
  21. -d nginx:1.10
  22. 创建“/mydata/nginx/html/index.html”文件,测试是否能够正常访问
  23. 访问:http://ngix所在主机的IP:80/index.html
  1. 安装好nginx,把Nginx当做tomcat来用
  2. mkdir /usr/local/nginx/html/es
  3. cd /usr/local/nginx/html/es
  4. vim fenci.txt
  5. 输入元年云
  6. 测试http://192.168.11.129/es/fenci.txt
  7. 然后创建“fenci.txt”文件,内容如下:
  8. echo "樱桃萨其马,带你甜蜜入夏" > /usr/local/nginx/html/es/fenci.txt
  9. 测试效果:
  10. GET _analyze
  11. {
  12. "analyzer": "ik_max_word",
  13. "text":"樱桃萨其马,带你甜蜜入夏"
  14. }
  15. 输出结果:
  16. {
  17. "tokens" : [
  18. {
  19. "token" : "樱桃",
  20. "start_offset" : 0,
  21. "end_offset" : 2,
  22. "type" : "CN_WORD",
  23. "position" : 0
  24. },
  25. {
  26. "token" : "萨其马",
  27. "start_offset" : 2,
  28. "end_offset" : 5,
  29. "type" : "CN_WORD",
  30. "position" : 1
  31. },
  32. {
  33. "token" : "带你",
  34. "start_offset" : 6,
  35. "end_offset" : 8,
  36. "type" : "CN_WORD",
  37. "position" : 2
  38. },
  39. {
  40. "token" : "甜蜜",
  41. "start_offset" : 8,
  42. "end_offset" : 10,
  43. "type" : "CN_WORD",
  44. "position" : 3
  45. },
  46. {
  47. "token" : "入夏",
  48. "start_offset" : 10,
  49. "end_offset" : 12,
  50. "type" : "CN_WORD",
  51. "position" : 4
  52. }
  53. ]
  54. }