docker部署elasticsearch8

-v /opt/soft/docker/elasticsearch/elastic/logs:/usr/share/elasticsearch/logs
-v /opt/soft/docker/elasticsearch/elastic/plugins:/usr/share/elasticsearch/plugins
–privileged
–network es-net
-p 9200:9200
-p 9300:9300
elasticsearch:8.11.0

命令解释

  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/opt/soft/docker/elasticsearch/elastic/data:挂载逻辑卷,绑定到es的数据目录
  • -v es-logs:/opt/soft/docker/elasticsearch/elastic/logs:挂载逻辑卷,绑定到es的日志目录
  • -v es-plugins:/opt/soft/docker/elasticsearch/elastic/plugins:挂载逻辑卷,绑定到es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net:加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置

4.5 浏览器访问ip:9200

因为elasticsearch8.x默认开启了ssl认证,导致无法通过http协议访问9200端口。
解决办法:elasticsearch.yml中的配置项xpack.security.enabled把true改为false,或者访问地址前加https://

4.5.1 关闭安全验证

/opt/soft/docker/elasticsearch/elastic/config修改elasticsearch.yml中的配置项xpack.security.enabled把true改为false即可,然后重启容器。

{
“name” : “3e3f8ad3b0f4”,
“cluster_name” : “docker-cluster”,
“cluster_uuid” : “0Aacm9CyQw-CFKp3uJ7Yjg”,
“version” : {
“number” : “8.11.0”,
“build_flavor” : “default”,
“build_type” : “docker”,
“build_hash” : “d9ec3fa628c7b0ba3d25692e277ba26814820b20”,
“build_date” : “2023-11-04T10:04:57.184859352Z”,
“build_snapshot” : false,
“lucene_version” : “9.8.0”,
“minimum_wire_compatibility_version” : “7.17.0”,
“minimum_index_compatibility_version” : “7.0.0”
},
“tagline” : “You Know, for Search”
}

4.5.2 将https改为http

/opt/soft/docker/elasticsearch/elastic/config修改elasticsearch.yml中的配置项xpack.security.http.ssl.enabled把true改为false即可,然后重启容器。

在这里插入图片描述
用户名:elastic
密码:

4.5.3 重置es密码
  1. 进入es容器

docker exec -it 容器id /bin/bash
或【有root权限】
docker exec -u 0 -it 容器id /bin/bash

  1. 重置es密码

./bin/elasticsearch-reset-password -u elastic

  1. 重置结果

This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y

Password for the [elastic] user successfully reset.
New value: g=dCSssbBYwal14pTPRf

es账号:elastic
密码:g=dCSssbBYwal14pTPRf

4.6 es添加其他用户

  1. 进入es容器

docker exec -it 容器id /bin/bash
或【有root权限】
docker exec -u 0 -it 容器id /bin/bash

4.6.1 添加kibana_system用户
  1. 添加kibana_system用户

./bin/elasticsearch-users useradd zhyqin

输入密码:kibana123456
2. zhyqin赋角色权限: 这一步要执行,不然无法访问

./bin/elasticsearch-users roles -a superuser zhyqin ( 超级管理员角色)
./bin/elasticsearch-users roles -a kibana_system zhyqin (kibana的用户角色 )

4.6.2 添加logstash用户
  1. 添加logstash用户

./bin/elasticsearch-users useradd logstash_zhyqin

输入密码:logstash123456

  1. logstash_zhyqin赋角色权限: 这一步要执行,不然无法访问

./bin/elasticsearch-users roles -a superuser logstash_zhyqin
./bin/elasticsearch-users roles -a logstash_system logstash_zhyqin

4.6.3 重置用户密码

./bin/elasticsearch-reset-password -u zhyqin
./bin/elasticsearch-reset-password -u logstash_zhyqin

5 kibana

5.1 创建存储kibana配置的目录

/opt/soft/docker/elasticsearch/kibana/

5.2 创建临时kibana节点

创建临时节点用于后续将kibana里的配置拷贝到/opt/soft/docker/elasticsearch/kibana

docker run -d
–name kibana
-p 5601:5601
kibana:8.11.0

5.3 拷贝kibana配置

将临时kibana节点中的配置拷贝到/opt/soft/docker/elasticsearch/kibana中

docker cp -a kibana:/usr/share/kibana/config/ /opt/soft/docker/elasticsearch/kibana

前面是kibana容器中的地址,后面是物理服务器上的地址。

拷贝后将临时kibana节点的容器删除。

5.4 创建真实kibana节点

kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。
注意kibana的版本最好和es保持一致。

docker run -d
–name kibana
-e ELASTICSEARCH_HOSTS=http://es:9200
-v /opt/soft/docker/elasticsearch/kibana/config:/usr/share/kibana/config
–network=es-net
-p 5601:5601
kibana:8.11.0

  • --network es-net:加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

kibana启动一般比较慢,需要多等待一会,然后在浏览器输入地址访问:ip:5601,即可看到结果如下图:
在这里插入图片描述

5.5 加入es登录的账号密码

去/opt/soft/docker/elasticsearch/kibana/config修改kibana.yml中添加账号密码。

注意:这里不能直接使用elastic账号密码,因为这个权限太高,kibana默认禁止使用。

** THIS IS AN AUTO-GENERATED FILE **

Default Kibana configuration for docker target

server.host: “0.0.0.0”
server.shutdownTimeout: “5s”
elasticsearch.hosts: [ “http://elasticsearch:9200” ]

es登录账号

elasticsearch.username: zhyqin

es登录密码

elasticsearch.password: kibana123456

关闭浏览器端配置

xpack.screenshotting.browser.chromium.disableSandbox: true

monitoring.ui.container.elasticsearch.enabled: true

然后重启容器。

5.6 Dev Tools

kibana中提供了一个Dev Tools界面:这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。

Dev Tools在左侧,侧边栏的最下边。
在这里插入图片描述

6 安装IK分词器

6.1 在线安装ik插件(较慢)

进入容器内部

docker exec -it es/bin/bash

在线下载并安装

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.11.0/elasticsearch-analysis-ik-8.11.0.zip

#退出
exit
#重启容器
docker restart es

6.2 离线安装ik插件(推荐)

  1. 解压缩分词器安装包
    去GitHub下载ik分词器并解压缩,重命名为ik。elasticsearch-analysis-ik-8.11.0.zip下载地址。
  2. 上传到es容器的plugins数据卷中,也就是:
    /opt/soft/docker/elasticsearch/elastic/plugins/,注意plugins目录只能保留ik,不要留存ik.zip,否则会报错。
  3. 重启容器

重启容器

docker restart es

查看es日志

docker logs -f es

6.3 测试

IK分词器包含两种模式:

  • ik_smart:最少切分
  • ik_max_word:最细切分

GET /_analyze
{
“text”: “强哥最棒”,
“analyzer”: “ik_max_word”
}

结果:

{
“tokens”: [
{
“token”: “强”,
“start_offset”: 0,
“end_offset”: 1,
“type”: “CN_CHAR”,
“position”: 0
},
{
“token”: “哥”,
“start_offset”: 1,
“end_offset”: 2,
“type”: “CN_CHAR”,
“position”: 1
},
{
“token”: “最”,
“start_offset”: 2,
“end_offset”: 3,
“type”: “CN_CHAR”,
“position”: 2
},
{
“token”: “棒”,
“start_offset”: 3,
“end_offset”: 4,
“type”: “CN_CHAR”,
“position”: 3
}
]
}

在这里插入图片描述

7 扩展词词典、停用词词典

7.1 扩展词词典

随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“奥力给”,“字节跳动” 等。

所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

  1. 打开IK分词器config目录
  2. 在IKAnalyzer.cfg.xml配置文件内容添加:
<?xml version="1.0" encoding="UTF-8"?> IK Analyzer 扩展配置 ext.dic
  1. 新建一个ext.dic,可以参考config目录下复制一个配置文件进行修改

字节跳动
奥力给

  1. 重启elasticsearch

docker restart es

查看 日志

docker logs -f es

日志中已经成功加载ext.dic配置文件。

  1. 测试效果

GET /_analyze
{
“analyzer”: “ik_max_word”,
“text”: “字节跳动是全球厉害的独角兽企业,奥力给!”
}

在这里插入图片描述

7.2 停用词词典

在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。

IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。

  1. IKAnalyzer.cfg.xml配置文件内容添加:
<?xml version="1.0" encoding="UTF-8"?> IK Analyzer 扩展配置 ext.dic stopword.dic
  1. 在stopword.dic添加停用词

吴某凡

  1. 重启elasticsearch

重启服务

docker restart es

查看 日志

docker logs -f es

日志中已经成功加载stopword.dic配置文件。
4. 测试效果:

GET /_analyze
{
“analyzer”: “ik_max_word”,
“text”: “吴某凡判多久”
}

在这里插入图片描述

8 部署docker-compose

  1. cd到/usr/local/bin/路径
  2. 从github上下载二进制文件

wget https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-linux-x86_64

  1. 重新命名

mv docker-compose-linux-x86_64 docker-compose

  1. 添加可执行权限

chmod +x docker-compose

8.1 dockr-compose命令

  1. 部署一个Compose应用

docker-compose up

默认情况下该命令会读取名为docker-compose.ymldocker-compose.yaml的文件,也可以使用-f指定其他文件名。通常情况下,会使用-d参数令应用在后台启动。
2. 停止Compose应用相关的所有容器,但不会删除它们

docker-compose stop

被停止的应用可以很容易地通过docker-compose restart命令重新启动。
3. 删除已停止的Compose应用

docker-compose rm

删除容器和网络,但是不会删除卷和镜像。
4. 重启已停止的Compose应用

docker-compose restart

如果在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
5. 列出Compose应用中的各个容器

docker-compose ps

输出内容包括当前状态、容器运行的命令以及网络端口。
6. 停止并删除运行中的Compose应用

docker-compose down

删除容器和网络,但是不会删除卷和镜像。

9 部署es集群

参考1:搜索引擎elasticsearch :安装elasticsearch (包含安装组件kibana、IK分词器、部署es集群)
参考2:docker-compose快速部署elasticsearch-8.x集群+kibana

部署es集群可以直接使用docker-compose来完成,不过要求Linux虚拟机至少有4G的内存空间。

9.1 编写docker-compose文件

首先编写一个docker-compose文件,内容如下:

version: ‘3’
services:
es01:
image: elasticsearch:8.11.0
container_name: es01
environment:

  • node.name=es01
  • cluster.name=es-docker-cluster
  • discovery.seed_hosts=es02,es03
  • cluster.initial_master_nodes=es01,es02,es03
  • bootstrap.memory_lock=true
  • xpack.security.enabled=false
  • “ES_JAVA_OPTS=-Xms512m -Xmx512m”
    ulimits:
    memlock:
    soft: -1
    hard: -1
    volumes:
  • data01:/usr/share/elasticsearch/data
    ports:
  • 9201:9200
    networks:
  • elastic
    es02:
    image: elasticsearch:8.11.0
    container_name: es02
    environment:
  • node.name=es02
  • cluster.name=es-docker-cluster
  • discovery.seed_hosts=es01,es03
  • cluster.initial_master_nodes=es01,es02,es03
  • bootstrap.memory_lock=true
  • xpack.security.enabled=false
  • “ES_JAVA_OPTS=-Xms512m -Xmx512m”
    ulimits:
    memlock:
    soft: -1
    hard: -1
    volumes:
  • data02:/usr/share/elasticsearch/data
    ports:
  • 9202:9200
    networks:
  • elastic
    es03:
    image: elasticsearch:8.11.0
    container_name: es03
    environment:
  • node.name=es03
  • cluster.name=es-docker-cluster
  • discovery.seed_hosts=es01,es02
  • cluster.initial_master_nodes=es01,es02,es03
  • bootstrap.memory_lock=true
  • xpack.security.enabled=false
  • “ES_JAVA_OPTS=-Xms512m -Xmx512m”
    ulimits:
    memlock:
    soft: -1
    hard: -1
    volumes:
  • data03:/usr/share/elasticsearch/data
    ports:
  • 9203:9200
    networks:
  • elastic
    volumes:
    data01:
    driver: local
    data02:
    driver: local
    data03:
    driver: local

networks:
elastic:
driver: bridge

注意事项:

  1. 从yml文件中可以看到相关端口,需要防火墙开放9201、9202、9203端口

es01端口9201

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Go语言工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-2b0KfAqT-1712867152799)]
[外链图片转存中…(img-vRAXE8xA-1712867152801)]
[外链图片转存中…(img-u2lrT4op-1712867152801)]
[外链图片转存中…(img-KQhnxeDi-1712867152802)]
[外链图片转存中…(img-aqYqFFrZ-1712867152802)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-S8ZqzBQt-1712867152803)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker 可以方便地部署 Elasticsearch。首先,需要在本地安装 Docker。然后,可以通过运行以下命令来启动 Elasticsearch 容器: ``` docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.2 ``` 这会在本地启动一个 Elasticsearch 容器,并将容器内部的 9200 端口映射到本地的 9200 端口,以便访问 Elasticsearch。 ### 回答2: 在Docker部署Elasticsearch是非常简单的,因为Elasticsearch已经提供了官方的Docker镜像。下面我们将介绍如何使用Docker部署Elasticsearch。 第一步:安装Docker 在开始之前,我们需要先在我们的机器上安装Docker。如果你还没有安装,请按照下面的步骤进行安装。 1.在终端上输入以下命令,下载和安装Docker ``` sh curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh ``` 2.Docker安装完成后,运行以下命令以将当前用户添加到docker组中 ``` sh sudo usermod -aG docker ${USER} ``` 3.重新登录以应用新组的更改 ``` sh su - ${USER} ``` 4.通过运行以下命令验证Docker是否正确安装 ``` sh docker run hello-world ``` 如果看到输出 "Hello from Docker!" 说明Docker已经安装成功。 第二步:拉取Elasticsearch镜像 Docker官方提供了Elasticsearch的官方镜像,我们可以通过以下命令来拉取它: ``` sh docker pull elasticsearch:7.10.1 ``` 这将下载Elasticsearch 7.10.1版本的官方镜像。 第三步:启动Elasticsearch容器 我们已经准备好了DockerElasticsearch镜像,现在将启动Elasticsearch容器。使用以下命令来启动容器: ``` sh docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:7.10.1 ``` 以上命令将启动Elasticsearch容器,并将容器的9200、9300端口映射到主机的对应端口。 现在,我们已经成功地在Docker部署Elasticsearch。可以通过浏览器或Curl命令检查Elasticsearch是否正在运行。 ``` sh curl http://localhost:9200/ ``` 将输出类似如下的内容: ``` sh { "name" : "926e6516b21e", "cluster_name" : "docker-cluster", "cluster_uuid" : "RH8jpc67T8yVTyroaCTVQg", "version" : { "number" : "7.10.1", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa", "build_date" : "2020-12-05T01:00:33.671820Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } ``` 至此,我们已经成功地将Elasticsearch部署到了Docker中。注意,这样的方式并不安全,仅适合用于本地测试和开发环境中。必要时,需要使用安全设置和访问控制列表对Elasticsearch进行保护。 ### 回答3: Docker 是一种基于容器化技术的轻量级虚拟化技术,可以在不同的操作系统和平台上运行。Elasticsearch是一个基于Lucene的全文搜索引擎,它提供了RESTful API接口,可以实现索引和搜索大型数据集,是目前最流行的搜索引擎之一。将Elasticsearch部署Docker容器中,能够使我们更加方便地管理Elasticsearch实例的启动、停止和扩展,并且可以在任意平台上运行。 要部署ElasticsearchDocker容器中,需要遵循以下步骤: 1. 安装Docker 首先需要安装Docker,可以到官方网站下载并安装。 2. 下载Elasticsearch镜像 在Docker Hub上有许多Elasticsearch镜像可供下载,可以选择一个合适的镜像并下载到本地。 3. 启动Elasticsearch容器 使用docker run命令启动Elasticsearch容器,并指定必要参数,如端口、数据卷、环境变量等。例如: ``` docker run -d --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -v /data/elasticsearch:/usr/share/elasticsearch/data \ -e "discovery.type=single-node" \ elasticsearch:7.10.1 ``` 这个命令会启动一个名为elasticsearch容器,并将9200和9300端口映射到主机上。同时指定了数据卷,使Elasticsearch数据持久化;设置了discovery.type为single-node,表示以单节点模式启动Elasticsearch。 4. 配置Elasticsearch 容器启动以后,可以使用HTTP API来配置Elasticsearch,例如创建索引、插入数据等。也可以将配置文件挂载到容器中,使用配置文件来配置Elasticsearch。 以上是在Docker部署Elasticsearch的简要步骤,需要注意的是,在部署过程中还需要考虑一些其他问题,如网络配置、性能优化等。另外,为了实现高可用性和负载均衡,可以使用Docker Swarm或Kubernetes等容器集群管理工具来管理Elasticsearch容器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值