注意elasticsearch,kibana和ik的版本要保持一致,如ik和elasticsearch的版本不一致时安装运行后报错.

参考

使用 Docker 安装弹性搜索编辑

安装docker

请参考安装docker

下载ik分词器插件

https://github.com/medcl/elasticsearch-analysis-ik/releases
下载后,创建目录,如D:\data\docker\elasticsearch\plugins,将下载的zip包解压到il目录下。目录结构如下
1664766796548.png

创建docker网络

  1. docker network create es
  1. docker network inspect es

拉取镜像

从弹性搜索 8.0 开始,默认情况下启用安全性。

  1. docker search elasticsearch

官方版本查看 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

  1. docker pull docker.elastic.co/elasticsearch/elasticsearch:8.4.3

docker hub ElasticSearch版本查看 https://hub.docker.com/_/elasticsearch/tags

  1. docker pull elasticsearch:8.4.3

系统配置

启动之前需要对系统进行一下配置,如果是linux

  1. sudo sysctl -w -vm.max_map_count=262144

如果是window Docker Desktop,必须在 docker-desktop 容器中设置该设置:vm.max_map_count

  1. wsl -d docker-desktop
  2. sysctl -w vm.max_map_count=262144

运行容器

单节点

  1. docker run --name elasticsearch --net es -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" -it elasticsearch:8.4.3

或者win

  1. docker run --name elasticsearch2 --net es -p 9200:9200 -p 9300:9300 -d ^
  2. -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" ^
  3. -it elasticsearch:8.4.3
  1. docker cp elasticsearch2:/usr/share/elasticsearch/config/ D:/data/docker/elasticsearch/
  2. docker cp elasticsearch2:/usr/share/elasticsearch/logs/ D:/data/docker/elasticsearch/
  3. docker cp elasticsearch2:/usr/share/elasticsearch/plugins/ D:/data/docker/elasticsearch/
  1. docker run --name elasticsearch --net es -p 9200:9200 -p 9300:9300 -d ^
  2. -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" ^
  3. -v D:/data/docker/elasticsearch/config/:/usr/share/elasticsearch/config/ ^
  4. -v D:/data/docker/elasticsearch/logs/:/usr/share/elasticsearch/logs/ ^
  5. -v D:/data/docker/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/ ^
  6. -it elasticsearch:8.4.3

:::warning -e ES_JAVA_OPTS=”-Xms1024m -Xmx1024m”
-v D:/data/docker/elasticsearch/logs:/usr/share/elasticsearch/logs
-v D:/data/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins ::: 在 Docker 中启动elasticsearch。为用户生成密码并输出到终端,以及用于注册 Kibana 的注册令牌。
可能需要在终端中向后滚动一点才能查看密码和注册令牌。但我电脑并没在看到
1664767019003.png

登录ES

启动成功后,访问https://127.0.0.1:9200/会出现如下界面:
1664767038971.png

重置密码

重置超级管理员elastic的密码

  1. docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

F3SXEhBp3Jysfd9OyhJX
输入账号elastic及密码,登录成功后显示内容如下

  1. {
  2. "name" : "b8ee60d621fe",
  3. "cluster_name" : "docker-cluster",
  4. "cluster_uuid" : "cdkdFnPES7-gOxhGkhsMVg",
  5. "version" : {
  6. "number" : "8.4.1",
  7. "build_flavor" : "default",
  8. "build_type" : "docker",
  9. "build_hash" : "2bd229c8e56650b42e40992322a76e7914258f0c",
  10. "build_date" : "2022-08-26T12:11:43.232597118Z",
  11. "build_snapshot" : false,
  12. "lucene_version" : "9.3.0",
  13. "minimum_wire_compatibility_version" : "7.17.0",
  14. "minimum_index_compatibility_version" : "7.0.0"
  15. },
  16. "tagline" : "You Know, for Search"
  17. }

生成token

生成enrollment-token(目前只发现kibana登录需要使用)

  1. docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
  1. eyJ2ZXIiOiI4LjQuMSIsImFkciI6WyIxNzIuMjQuMC4yOjkyMDAiXSwiZmdyIjoiMTQwYzM2NGQ0NzVmMjMyM2ZmMzBmZDkyOWQyNWMyMWJmNTU2NjE3MzU2YzU1ZjQ1ZjliOGU3ZDU0MGJiNjU1OSIsImtleSI6ImtUTWpuSU1CV1ZhNDdxeTlWT3diOnBONmdsZ0RJUjBTVzRSdlQ
  2. 0RXZqWGcifQ==

容器目录结构

目录 配置文件 描述
bin 脚本文件,包括启动 Elasticsearch、安装插件,运行统计数据等。
config elasticsearch.yml 集群配置文件
JDK Java 运行环境
data path.data 数据文件
lib Java 类库
logs path.logs 日志文件
modules 包含所有 ES 模块
plugins 包含所有已安装插件

重置密码

以下示例将用户的密码重置为自动生成的值,并在控制台中打印新密码:elastic

  1. docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana

Dp_qePbMEoE-PdW7yaUg

  1. docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
  1. docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system

7nane=rGx6BC3fLol5bS

安全证书

将安全证书从 Docker 容器复制到本地计算机。http_ca.crt

  1. F:\project\elasticsearch
  1. docker cp elasticsearch:/usr/share/elasticsearch/config/certs/http_ca.crt .

从elasticsearch容器下载证书到本地后,手工导入证书.
1664767723280.png

修改配置文件

这时,需要修改es的配置文件。增加跨域及http的配置。可以直接进入容器修改,也可以copy出来修改在copy回去。由于进入容器还需要下载vim。我这边直接copy出来修改。

  1. cd F:\project\elasticsearch

copy /usr/share/elasticsearch/config/elasticsearch.yml到本地F:/project/elasticsearch/elasticsearch.yml

  1. docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml F:/project/elasticsearch/elasticsearch.yml
  1. cluster.name: "docker-cluster"
  2. network.host: 0.0.0.0
  3. #----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
  4. #
  5. # The following settings, TLS certificates, and keys have been automatically
  6. # generated to configure Elasticsearch security features on 03-10-2022 03:12:40
  7. #
  8. # --------------------------------------------------------------------------------
  9. # Enable security features
  10. xpack.security.enabled: true
  11. xpack.security.enrollment.enabled: true
  12. # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
  13. xpack.security.http.ssl:
  14. enabled: true
  15. keystore.path: certs/http.p12
  16. # Enable encryption and mutual authentication between cluster nodes
  17. xpack.security.transport.ssl:
  18. enabled: true
  19. verification_mode: certificate
  20. keystore.path: certs/transport.p12
  21. truststore.path: certs/transport.p12
  22. #----------------------- END SECURITY AUTO CONFIGURATION -------------------------

在restart: always新增行,添加如下配置

  1. # =====添加如下配置=====
  2. # 开启跨域
  3. http.cors.enabled: true
  4. # 所有人访问
  5. http.cors.allow-origin: "*"
  6. # ======================
  1. # =====修改如下配置为false=====
  2. xpack.security.http.ssl:
  3. enabled: false
  4. # ======================
  1. cluster.name: "docker-cluster"
  2. network.host: 0.0.0.0
  3. #----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
  4. #
  5. # The following settings, TLS certificates, and keys have been automatically
  6. # generated to configure Elasticsearch security features on 03-10-2022 03:12:40
  7. #
  8. # --------------------------------------------------------------------------------
  9. # =====添加如下配置=====
  10. # 开启跨域
  11. http.cors.enabled: true
  12. # 所有人访问
  13. http.cors.allow-origin: "*"
  14. # ======================
  15. # Enable security features
  16. xpack.security.enabled: true
  17. xpack.security.enrollment.enabled: true
  18. # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
  19. xpack.security.http.ssl:
  20. enabled: false
  21. keystore.path: certs/http.p12
  22. # Enable encryption and mutual authentication between cluster nodes
  23. xpack.security.transport.ssl:
  24. enabled: true
  25. verification_mode: certificate
  26. keystore.path: certs/transport.p12
  27. truststore.path: certs/transport.p12
  28. #----------------------- END SECURITY AUTO CONFIGURATION -------------------------

保存后copy回去

  1. docker cp F:/project/elasticsearch/elasticsearch.yml elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml
  1. docker restart elasticsearch

拉取kibana

kibana为elasticsearch的图形界面,或者选择ElasticSearch-Head也可以
版本查看 https://hub.docker.com/_/kibana

  1. docker pull kibana:8.4.3

运行kibana

注意地址一定要改成自己的主机地址

  1. docker run --name kibana --link=elasticsearch:elasticsearch --net es -p 5601:5601 -e "I18N_LOCALE=zh-CN" -d kibana:8.4.3

或者

  1. docker run --name kibana --net es -p 5601:5601 ^
  2. -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 ^
  3. -e "I18N_LOCALE=zh-CN" -d kibana:8.4.3

:::warning -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200
-e “I18N_LOCALE=zh-CN” :::

测试环境

浏览器搜素指定地址查看是否能连接

kibana

http://192.168.3.40:5601/
1664769882510.png
输入之前生成的token,弹出
1664769937059.png
弹窗该窗口,kibana需要验证码。这个验证码在kibana容器控制台也可以看到:
1664770018607.png
手工输入控制台的602992,如果没有看到,

  1. docker exec -it kibana /usr/share/kibana/bin/kibana-verification-code

1664770153829.png
或者按以下的方法重新生成验证码

  1. docker exec -it kibana /bin/bash
  1. cd /usr/share/kibana/bin
  1. kibana-verification-code

1664763319121.png
1664772310739.png
输入完验证后,以elastic账号登录到kibana
Docker安装ElasticSearch - 图11
1664773076603.png

es-client浏览器插件

安装插件

打开Microsoft Edge的扩展页面,搜索es-client
1664773270447.png
安装完成后,查看说明 :::warning 1664773359283.png :::

打开插件

在浏览器打开插件,extension://aonamamifdfigcflbeokdndfappnmogo/es-client/index.html
1664773457507.png

配置地址

下载好之后打开插件页面,配置elasticsearch地址
1664773589057.png
1664773613317.png
地址为http://192.168.3.40:9200/
1664773710152.png
在浏览器里打开http://192.168.3.40:9200/,输入账号及密码,
elastic
F3SXEhBp3Jysfd9OyhJX
1664774008908.png

Elasticvue浏览器插件

安装后,打开extension://geifniocjfnfilcbeloeidajlfmhdlgo/index.html#/cluster/0/
1664784395889.png