还不算晚,虽然已经距离发布过去了快半个月~
跟着下面的步骤进行一步一步操作(CV),只需要改动一下用户名、密码这些数据即可从零开始用 Docker安装 ES 与 Kibana 最新版,据说 Kibana 还有 AI 助手嘞(虽然是 8.12 推出的)~
最后强调一点,安装部署 ES 与 Kibana 的机器最低配置是2核4G,低于这个配置的可能会导致部署失败。如果只是部署 ES,那2核2G勉强能用(不建议)。
关于最新版(或者8.x)具体有哪些新功能和特性,建议可以去网上找找资料,或者是查询官方文档
获取镜像
第一步是拉取拉取镜像
docker pull elasticsearch:8.15.0
docker pull kibana:8.15.0
如果服务器拉取不到镜像,可以先在本地制作好镜像(需要科学上网),能正常拉取的请忽视这一步,直接进行下一步。
docker save -o /images/elasticsearch.tar elasticsearch:8.15.0
docker save -o /images/kibana.tar kibana:8.15.0
通过 scp 的方式传输到服务器文件目录中(注意将port、username与host替换成对应的端口号、用户名和主机号),或者直接通过本地文件传输的方式(更加保险),不过这里我采用 scp 方便一点(确保服务器有这个目标文件夹)
scp -P port /images/elasticsearch.tar username@host:/images
scp -P port /images/kibana.tar username@host:/images
上述命令第一次执行可能会提醒:The authenticity of host '[xx.xx.xx.xxx]:xxxx ([xx.xx.xx.xxx]:xxxx)' can't be established.
。意思是不确定这个主机是否存在,直接输入 yes 回车继续连接即可。然后就会让输入密码,密码输入之后就会开始传输,静静等待完成即可。
传输完成之后,输入下面的命令加载进行
docker load -i /images/elasticsearch.tar
docker load -i /images/kibana.tar
准备工作
镜像准备好之后,先创建网络
docker network create es-net
创建 ES 与 Kibana 的挂载文件夹
mkdir -p /usr/local/es/data /usr/local/es/config /usr/local/es/plugins
mkdir -p /usr/local/kibana/data /usr/local/kibana/config
赋予权限
chmod 777 /usr/local/es/data
chmod 777 /usr/local/es/config
chmod 777 /usr/local/es/plugins
chmod 777 /usr/local/kibana/data
chmod 777 /usr/local/kibana/config
部署 ElasticSearch
单机部署,运行 ES(如果不想开启权限认证,可以在下面的第八行指令中插入一行-e "xpack.security.enabled=false" \
关闭认证,但是与之对应,会失去这部分的功能,生产环境下不建议关闭)
docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
-e ELASTIC_PASSWORD=123456 \
-e "xpack.security.http.ssl.enabled=false" \
-v /usr/local/es/data:/usr/share/elasticsearch/data \
-v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.15.0
访问 http://host:9200
,第一次访问会要求输入密码,用户名默认为elastic
,密码是设置的ELASTIC_PASSWORD
,这里是123456,运行成功则能看到下面的页面
创建用户
接着进入 es 容器,配置 Kibana 权限用户
docker exec -it es bash
修改 Kibana 用户密码(如果用户名不想用kibana,可以换成别的,但是下面运行 Kibana 的环境变量ELASTICSEARCH_USERNAME
要与之对应,否则 Kibana 无法正常启动)
curl -u elastic:123456 \-X POST \http://localhost:9200/_security/user/kibana/_password \-d '{"password":"'"123456"'"}' \-H 'Content-Type: application/json'
创建超管角色(同理,admin_role 也可以换成别的,但下面创建用户时的 roles 要与之对应 ),如果想要创建其他权限的角色可以自行创建
curl -X PUT "http://localhost:9200/_security/role/admin_role" -H "Content-Type: application/json" -u elastic:123456 -d'
{"cluster": ["all"],"index": [{"names": ["*"],"privileges": ["all"]}],"applications": [{"application": "*","privileges": ["*"],"resources": ["*"]}]
}
'
创建超管用户( full_name与 email 可以不用设置,删掉就好,后续启动 Kibana 后可以再设置)
curl -X POST "http://localhost:9200/_security/user/admin" -H "Content-Type: application/json" -u elastic:123456 -d'
{"password" : "123456","roles" : [ "admin_role" ],"full_name" : "Admin User","email" : "admin@example.com"
}
'
运行 Kibana
在/usr/local/kibana/config
目录下创建一个 kibana.yml 文件,其中写上以下配置
# Default Kibana configuration for docker target
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true# 汉化(有些部分还未来得及汉化)
i18n.locale: "zh-CN"
运行 Kibana(注意,本人已经试验过了,内存为512M时启动会导致 OOM,所以这里至少给了1g)
docker run -d \
--restart=always \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_URL=http://es:9200 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
-e ELASTICSEARCH_USERNAME=kibana \
-e ELASTICSEARCH_PASSWORD=123456 \
-v /usr/local/kibana/data:/usr/share/kibana/data \
-v /usr/local/kibana/config:/usr/share/kibana/config \
--memory=1g \
--memory-reservation=1g \
kibana:8.15.0
运行成功之后访问http://host:5601
,会要求输入账号密码,输入创建好的超管账密登录即可 (使用创建的其他角色时权限要给够,否则会出现You do not have permission to access the requested page报错,无法正常进入 )
看到这个画面时,就证明 Kibana 与 ES 已经部署成功。至于 AI Assistant ,点击 Security 进入后就可以在右上角看到。该功能是收费的,但是可以免费试用 30天。
点击 Manage license 就可以看到
安装 IK 分词器
进入 ES 容器
docker exec -it es /bin/bash
执行下面的命令,输入 y 回车即可安装分词器
./bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.15.0
安装之后,在 Kibana 的 Management 中有一个开发工具可以进行分词测试
先写一个 GET 请求
GET /_analyze
{"analyzer": "ik_smart","text": "一个人要想使自己的人生有所造就,就必须懂得在关键时刻把自己带到人生的悬崖,给自己一片悬崖其实就是给自己一片蔚蓝的天空啊。——王新文《知音》"
}
然后点击执行,就可以看到右边出现的分词结果
上面使用的是ik_smart
(最少切分)模式,还有一种ik_max_word
(最细切分)模式
GET /_analyze
{"analyzer": "ik_max_word","text": "一个人要想使自己的人生有所造就,就必须懂得在关键时刻把自己带到人生的悬崖,给自己一片悬崖其实就是给自己一片蔚蓝的天空啊。——王新文《知音》"
}
到此,ES 与 Kibana 安装结束,其他的功能请自行探索吧~