使用docker搭建es, 并且配置 hanlp分词

一 、dockerfile

version: "2.2"
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: elk-es
    restart: always
    environment:
      # 开启内存锁定
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      # 指定单节点启动
      - discovery.type=single-node
    ulimits:
      # 取消内存相关限制 用于开启内存锁定
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./data/es/data:/usr/share/elasticsearch/data
      - ./data/es/logs:/usr/share/elasticsearch/logs
      - ./data/es/plugins:/usr/share/elasticsearch/plugins
      - ./data/es/config/analysis-hanlp:/usr/share/elasticsearch/config/analysis-hanlp
      - ./data/es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options
    ports:
      - 9200:9200

记得要给 data目录权限

运行命令,启动docker

docker-compose up -d 

安装 hanlp 分词器

推荐这个库 github.com/KennFalcon/elasticsearc...

在容器内运行

./bin/elasticsearch-plugin install https://github.com/KennFalcon/elasticsearch-analysis-hanlp/releases/download/v6.5.4/elasticsearch-analysis-hanlp-6.5.4.zip

此处的hanlp的版本要和docker中es的版本一致

二、安装分词模型

这个库的作者认为一些模型不是所有人都需要,所以默认是不带crf和nlp模型的,需要去 github.com/hankcs/HanLP/releases 下载对应版本的数据包,需要注意版本

安装之后需要重启docker

安装crf模型

先去下载对应的数据包,找到data/model中的crf文件夹,将此文件夹放入 data/es/plugins/analysis-hanlp/data/model 文件夹
注意一些问题:

  1. 本来的plugin-security.policy 中的FilePermission会导致es报错,记得修改为
    // HanLP data directories
    //permission java.io.FilePermission "plugins/analysis-hanlp/data/-", "read,write,delete";
    //permission java.io.FilePermission "plugins/analysis-hanlp/hanlp.cache", "read,write,delete";
    permission java.io.FilePermission "<<ALL FILES>>", "read,write,delete";
  2. hanlp分词模型安装之后重启docker,如果不做处理会报错说找不到 hanlp.properties文件,解决方案就是在dockerfile提前将几个关键文件挂载出来
       - ./data/es/config/analysis-hanlp:/usr/share/elasticsearch/config/analysis-hanlp
       - ./data/es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options

最后就可以开心愉快的使用hanlp分词了

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!