Docker安装Elasticsearch 8.x 、Kibana 8.x等

这里我使用的是8.2.0版本。同时内容会介绍ik分词和elastic-head的安装,elasticsearch-java的配置。

1. 下载ik分词器插件

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.2.0/elasticsearch-analysis-ik-8.2.0.zip

下载后,创建目录esplugins(名称自定义)用于后续es容器将插件目录挂载到该目录。由于我的docker环境是在window电脑下。创建目录地址C:\Users\QM\Desktop\es\esplugins8。
将下载的zip包解压到目录下。目录结构如下:

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第1张图片

2. 创建docker网络

docker network create es

3. 安装ElasticSearch 8.2.0

# 拉取elasticsearch镜像
docker pull elasticsearch:8.2.0

# 启动镜像(换行符是win下的,linux需要自己更改)
docker run -d --name es8 --net es ^
-v C:\Users\QM\Desktop\es\esplugins8:/usr/share/elasticsearch/plugins ^
-p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.2.0

启动之后在容器中查看日志。会打印出token,密码等信息,需要保存后续使用。页面如下。

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第2张图片

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

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第3张图片

账号elastic,密码就是控制台生成的。登录后看到如下图就是启动成功了:

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第4张图片

我这边并没有发现密码和token哈,不过不急,可以自己生成。

3.1 生成elastic密码及enrollment-token

# 生成超级管理员elastic的密码
docker exec -it es8 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
# 生成enrollment-token(目前只发现kibana登录需要使用)
docker exec -it es8 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

3.2 修改配置文件

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

# copy到桌面
docker cp es8:/usr/share/elasticsearch/config/elasticsearch.yml C:\Users\QM\Desktop\elasticsearch.yml

# =====添加如下配置=====
# 开启跨域
http.cors.enabled: true
# 所有人访问
http.cors.allow-origin: "*"
# ======================

# =====修改如下配置为false=====
xpack.security.http.ssl:
  enabled: false
# ======================

# 保存后copy回去
docker cp C:\Users\QM\Desktop\elasticsearch.yml es8:/usr/share/elasticsearch/config/elasticsearch.yml 

这里解释下,为什么要修改http.ssl为false
答:如果不修改,访问elasticsearch默认是https请求。也没问题。但是在java-api中操作,请求需要配置ca证书。我觉的很麻烦。关闭后直接使用基本认证账号密码就可以了。

修改后,重启es。

docker restart es8

4. 安装kibana 8.2.0

# 拉取镜像
docker pull kibana:8.2.0

# 启动镜像(环境变量,指定中文,也就是汉化)
docker run -d --net es --name kb8 -p 5601:5601  -e "I18N_LOCALE=zh-CN" kibana:8.2.0

访问地址:http://localhost:5601/,如下:
Docker安装Elasticsearch 8.x 、Kibana 8.x等_第5张图片

这时,我们就可以把在elasticsearch启动时生成的令牌粘贴到里面。然后点击配置Elastic。
Docker安装Elasticsearch 8.x 、Kibana 8.x等_第6张图片

弹窗该窗口,kibana需要验证码。这个验证码在kibana容器控制台也可以看到:

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第7张图片

如果没看到,也可以使用如下命令生成:

docker exec -it kb8 /usr/share/kibana/kibana-verification-code

然后就出现了如下(如果http.ssl没关,不会出现这种情况。但是后续步骤也是差不多的,继续看就好):

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第8张图片

额,可能是我在elasticsearch配置文件中关闭了http.sll导致的。不慌,备选方案,点击手动配置。

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第9张图片

这个地址是kibane访问elasticsearch的地址。如果检查上方的默认值肯定是不通的。在kibana容器中ping localhost:9200肯定不会通啊。但是他俩在一个docker网络。我们去docker查看下elasticsearch的ip地址。

# 查看网络详情
docker network inspect es

找到下面这一段。发现es的ip为172.18.0.2

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第10张图片

在kibana页面输入http://172.18.0.2:9200检查,进入如下页面:

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第11张图片

这个页面的用户kibana_system的密码需要我们去生成。命令如下:

docker exec -it es8 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system

生成后,输入密码点击配置,如下就算成功了。

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第12张图片

等配置好后,会需要我们登录。那这个账号就是elastic超级管理员的账号登录了,密码忘记可以看3.1重新生成。

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第13张图片

登陆后,大功告成!

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第14张图片

5. 安装elasticsearch-head

这个其实没必要安装,像一些视频,博主啥的。还要下载node环境,下载项目啥的。谷歌浏览器有吧。谷歌商店(这要进不去,身为程序员反思下)能进去吧,搜索elasticsearch-head。下载浏览器插件就好了。

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第15张图片

下载好之后打开插件页面,配置elasticsearch地址。认证就好了。账号密码就是elastic那个。

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第16张图片

登录成功后。

Docker安装Elasticsearch 8.x 、Kibana 8.x等_第17张图片

6. Java-api

其实elasticsearch8.x之后的java-api的命名空间(改为co.elastic.clients)与名字(改为elasticsearch-java)都改了。像什么RestHighLevelClient这些类也弃用了。取而代之的是ElasticsearchClient。
由于我们大部分都是使用springboot,这里就按照springboot集成。

6.1 引入依赖

我这里的springboot是2.7.0 。注意版本兼容,尽量与es服务版本相同。

<dependency>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-starter-data-elasticsearchartifactId>
dependency>

<dependency>
  <groupId>jakarta.jsongroupId>
  <artifactId>jakarta.json-apiartifactId>
  <version>2.0.1version>
dependency>

6.2 配置yml

spring:
  elasticsearch:
    username: elastic
    password: Zwpf5villae8_S+ZizxR

6.3 配置bean

由于自动配置类,最高版本也没有兼容ElasticsearchClient。还是注入的RestHighLevelClient。所以我们这边自己配置注入ElasticsearchClient

/**
* 最新版已经弃用RestHighLevelClient。
* 同时所有操作类移动到co.elastic包下
* 该版本依赖不出意外是兼容到es8.x
*/
@Bean
ElasticsearchClient elasticsearchClient(RestClient restClient) {
    // Create the Java API Client with the same low level client
    ElasticsearchTransport transport = new RestClientTransport(
        restClient,
        new JacksonJsonpMapper()
    );
    return new ElasticsearchClient(transport);
}

6.4 总结

我相信,能看到这篇文章的,Java都不弱。具体API,参考官网使用吧:
https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/index.html

你可能感兴趣的:(Elasticsearch,elasticsearch,kibana,elasticsearch,8,es-head,ik)