• 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包解压到目录下。目录结构如下:

    在这里插入图片描述

    2. 创建docker网络

    docker network create es
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述

    我这边并没有发现密码和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
    
    • 1
    • 2
    • 3
    • 4

    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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

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

    修改后,重启es。

    docker restart es8
    
    • 1

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    访问地址:http://localhost:5601/,如下:
    在这里插入图片描述

    这时,我们就可以把在elasticsearch启动时生成的令牌粘贴到里面。然后点击配置Elastic。
    在这里插入图片描述

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

    在这里插入图片描述

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

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

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

    在这里插入图片描述

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

    在这里插入图片描述

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

    # 查看网络详情
    docker network inspect es
    
    • 1
    • 2

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

    在这里插入图片描述

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

    在这里插入图片描述

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

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

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

    在这里插入图片描述

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

    在这里插入图片描述

    登陆后,大功告成!

    在这里插入图片描述

    5. 安装elasticsearch-head

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

    在这里插入图片描述

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

    在这里插入图片描述

    登录成功后。

    在这里插入图片描述

    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.boot</groupId>
      <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <!--参照:https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/7.17/installation.html-->
    <dependency>
      <groupId>jakarta.json</groupId>
      <artifactId>jakarta.json-api</artifactId>
      <version>2.0.1</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    6.2 配置yml

    spring:
      elasticsearch:
        username: elastic
        password: Zwpf5villae8_S+ZizxR
    
    • 1
    • 2
    • 3
    • 4

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    6.4 总结

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

  • 相关阅读:
    PEG包裹上转换荧光纳米颗粒
    第十九节——vue内置组件
    【牛客刷题】二叉树的镜像
    超简单的Python教程系列——异步
    信号隔离、电源隔离介绍
    Apache DolphinScheduler 社区5月月报更新!
    思科交换机VLAN基本配置
    Java开发人员必知必会的20种常用类库和API
    Go语言的GoFrame+Vue+ElementUI开源框架推荐
    深入理解通知服务NotificationListenerService原理
  • 原文地址:https://blog.csdn.net/weixin_45056780/article/details/125408524