docker之elasticsearch安装与配置(分词器)

一:查找ElasticSearch镜像

查询elasticsearch 的最新镜像

https://hub.docker.com/_/elasticsearch?tab=tags

二:拉取ElasticSearch镜像

docker pull elasticsearch:7.9.3 

三:创建Elasticsearch容器

1. 创建创建所需挂载文件

mkdir -p /opt/elasticsearch_docker/config
mkdir -p /opt/elasticsearch_docker/data
echo "http.host: 0.0.0.0">>/opt/elasticsearch_docker/config/elasticsearch.yml

注意:http.host: 0.0.0.0 冒号后有一空格。

2.文件夹赋权

chmod -R 777 elasticsearch_docker/

对挂载文件赋予全局的用户权限,方便doker容器调用
否则会触发 AccessDeniedException[/usr/share/elasticsearch/data/nodes] 文件访问异常

3.命令启动

docker run \
--name elasticsearch \
--restart=always \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m -Duser.timezone=Asia/Shanghai" \
-v /opt/elasticsearch_docker/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /opt/elasticsearch_docker/data:/usr/share/elasticsearch/data \
-v /opt/elasticsearch_docker/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.9.3 

参数说明

--name elasticsearch:将容器命名为 elasticsearch
--restart=always: 容器自动重启
-p 9200:9200:将容器的9200端口映射到宿主机9200端口
-p 9300:9300:将容器的9300端口映射到宿主机9300端口,目的是集群互相通信
-e "discovery.type=single-node":单例模式
-e ES_JAVA_OPTS="-Xms128m -Xmx128m -Duser.timezone=Asia/Shanghai":配置内存大小和设置时区
-v /opt/elasticsearch_docker/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:将配置文件夹挂载到宿主机
-v /opt/elasticsearch_docker/data:/usr/share/elasticsearch/data:将数据文件夹挂载到宿主机
-v /opt/elasticsearch_docker/plugins:/usr/share/elasticsearch/plugins:将插件目录挂载到宿主机(需重启)
-d elasticsearch:7.9.3:后台运行容器,并返回容器ID

4.查看是否启动成功

docker ps -a
docker logs -f --tail 200 elasticsearch
curl http://127.0.0.1:9200/
{
  "name" : "efcee23f71d5",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "deKOv1k4Sbuhw1lk8dwlow",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date" : "2020-10-16T10:36:16.141335Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

四:插件安装

安装方式

  • 在线下载安装
    进入容器

    docker exec -it elasticsearch bash
    

    执行命令

    ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.12/elasticsearch-analysis-ik-6.8.12.zip
    
  • 离线安装
    在windows 下载好好后,上传到服务器上

    docker cp 本地文件的路径 container_id:<docker容器内的路径>

    docker cp elasticsearch-analysis-ik-6.8.12.zip 05884d14c5dd:/usr/share/elasticsearch/ 
    

    进入容器

    docker exec -it elasticsearch bash
    

    插件安装,执行以下命令进行安装,在提示时输入y,然后回车

    ./bin/elasticsearch-plugin install file:///usr/share/elasticsearch/elasticsearch-analysis-ik-6.8.12.zip  
    
    -> Downloading file:///usr/share/elasticsearch/elasticsearch-analysis-ik-6.8.12.zip
    [=================================================] 100%?? 
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @     WARNING: plugin requires additional permissions     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    * java.net.SocketPermission * connect,resolve
    See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
    for descriptions of what these permissions allow and the associated risks.
    
    Continue with installation? [y/N]y
    -> Installed analysis-ik
    

    查看已安装插件

    ./bin/elasticsearch-plugin list
    
    analysis-ik
    

    注意:按对应版本下载,且这种方式在容器删除后,插件会消失,所以建议将将插件挂载到本地目录中

1. 中文分词器IK 安装

地址:https://github.com/medcl/elasticsearch-analysis-ik/tree/v6.8.12

2. 拼音分词器安装

地址:https://github.com/medcl/elasticsearch-analysis-pinyin/tree/v6.8.12

五:常见问题

  1. max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    编辑 /etc/sysctl.conf,追加以下内容:
    vm.max_map_count=655360
    
    保存后,执行
    sysctl -p
    
    最后重启容器

    即使是docker安装,也是在主机上面修改这个配置

可以按照以下步骤安装Elasticsearch和ik分词器: 1. 首先安装DockerDocker Compose,可以参考官方文档进行安装。 2. 在本地创建一个文件夹,例如命名为 `elasticsearch`。 3. 在 `elasticsearch` 文件夹下新建一个 `docker-compose.yml` 文件,写入以下内容: ``` version: '3.7' services: elasticsearch: image: elasticsearch:7.9.3 container_name: elasticsearch environment: - discovery.type=single-node - ES_JAVA_OPTS=-Xms512m -Xmx512m ports: - 9200:9200 - 9300:9300 volumes: - ./data:/usr/share/elasticsearch/data ``` 这里使用的是 Elasticsearch 7.9.3 版本,可以根据需要进行修改。 4. 在 `elasticsearch` 文件夹下新建一个 `data` 文件夹,用于存储 Elasticsearch 的数据。 5. 在 `elasticsearch` 文件夹下新建一个 `Dockerfile` 文件,写入以下内容: ``` FROM elasticsearch:7.9.3 RUN elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip ``` 这里使用的是 Elasticsearch 7.9.3 版本和 ik 分词器 7.9.3 版本,可以根据需要进行修改。 6. 在终端进入 `elasticsearch` 文件夹,执行以下命令启动 Elasticsearch: ``` docker-compose up -d ``` 等待一段时间,可以通过访问 `http://localhost:9200/` 来验证 Elasticsearch 是否启动成功。 7. 如果需要在代码中使用 ik 分词器,需要在代码中添加以下依赖: ``` <dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>analysis-ik</artifactId> <version>7.9.3</version> </dependency> ``` 然后在代码中使用 `IKAnalyzer` 来进行分词。 ``` Analyzer analyzer = new IKAnalyzer(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值