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

2023-11-09

这里我使用的是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

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,密码等信息,需要保存后续使用。页面如下。

在这里插入图片描述

启动成功后,访问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

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/,如下:
在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

在这里插入图片描述

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

# 查看网络详情
docker network inspect es

找到下面这一段。发现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

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

在这里插入图片描述

等配置好后,会需要我们登录。那这个账号就是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>

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker安装Elasticsearch 8.x 、Kibana 8.x等 的相关文章

  • 如何在 Elasticsearch 中同时按父字段和嵌套字段排序?

    我需要同时按父字段和嵌套字段在 Elasticsearch 中排序 我的数据是这样的 id 1 rank 8 price 12 45 offers id 777 rank 12 price 45 75 id 2 rank 35 price
  • 如何在elasticsearch中使用冒号搜索模式?

    我在 Elasticsearch 中有一个字段 其值为 ft 05 08 2015 13 01 27 358 cgn 4189 当我想使用查询字符串 cgn 4189 进行搜索时 我没有结果 我尝试像 cgn 4189 一样转义冒号 但有语
  • Elasticsearch 对字符串排序未返回预期结果

    当对包含多个单词的字符串字段进行排序时 Elasticsearch 会拆分字符串值并使用最小值或最大值作为排序值 即 当对值为 老虎之眼 的字段进行升序排序时 排序值为 Eye 当按降序排序时 排序值为 Tiger 假设我的索引中有 老虎之
  • 在 ElasticSearch 7+ 中,如何搜索所有文本字段?

    我想在 Elasticsearch 7 3 中存储的文档中搜索单词 我希望在以前版本的 Elasticsearch 上运行的一个示例是 query bool must match all oliver must not should fro
  • Elasticsearch 中的嵌套与对象

    有人可以解释 Elasticsearch 文档中 对象 和 嵌套 字段之间的区别吗 我知道默认情况下字段被定义为对象 我还知道我可以用这样的点访问对象字段 my field name my field title 等 对象的文档 http
  • Logstash删除类型并保留_type

    我有一个logstash 客户端和服务器 客户端将带有logstash的udp输出的日志文件发送到服务器 服务器也运行logstash来获取这些日志 在服务器上 我有一个 json 过滤器 它会在实际日志的字段中提取 json 格式的消息
  • 在 Elasticsearch 中对具有一个值的属性进行多个值查询

    我正在尝试在这个查询的基础上进行一些构建 我正在搜索的索引还有一个带有 id 的 实体 字段 因此 一些记录将具有 实体 16 实体 156 等 具体取决于实体的 ID 我需要以这样的方式扩展此查询 以便可以传递数组或某些值列表 例如 te
  • 弹性搜索模糊匹配,精确匹配首先显示

    我想在查询中使用模糊匹配 但精确匹配显示在结果的顶部 我已经尝试过以下方法 return this gt client gt search array index gt self INDEX type gt self TYPE body g
  • elasticsearch查询字符串分析器针对不同字段使用不同的分析器

    当对具有不同分析器 stem ngram等 的多个字段执行查询时 elasticsearch是否对每个字段的查询字符串执行特定的分析 是的 除非您在查询中指定分析器 这请求参数 http www elasticsearch org guid
  • 局部敏感哈希 - Elasticsearch

    有没有允许在 Elasticsearch 上使用 LSH 的插件 如果是的话 您能否指出该位置并告诉我如何使用它 谢谢 编辑 我发现ES使用了MinHash插件 我怎样才能用这个来比较文件呢 查找重复项的最佳设置是什么 有一个Elastic
  • 全文搜索 DynamoDB

    以下情况 我正在为我的客户将元素存储在 DyanmoDb 中 HashKey 是元素 ID Range Key 是客户 ID 除了这些字段之外 我还存储一个字符串数组 gt 标签 例如 Pets House 和多行文本 我想在我的应用程序中
  • 从 App Engine 连接到 Kubernetes 引擎

    我们希望使用应用程序引擎灵活的流程来更新位于 Google Kubernetes Engine 上的 ElasticSearch 索引 我们需要通过 http s 地址连接到 ElasticSearch 推荐的方法是什么 我们不想将集群暴露
  • 如何编写Elasticsearch多个必须脚本查询?

    我想使用查询来比较多个字段 我有字段 1 到 4 我想搜索字段 1 大于字段 2 的数据 并且下面的查询工作正常 size 0 source field1 field2 field3 field4 sort query bool filte
  • 如何在不更改设置的情况下不区分大小写排序

    我的索引名称是 data new 下面是插入索引的代码 test id 1 name A professor Bill Cage accounting id 2 name AB professor Gregg Payne engineeri
  • Elasticsearch 单个字段的多个分析器

    我使用严格的预定义映射将不同类型的文档存储在单个索引中 它们都有一些字段 例如 body 但我希望在索引时对它们进行稍微不同的分析 例如 对特定文档使用不同的标记过滤器 并在搜索时以相同的方式处理 据我所知 分析器不能按文档指定 我还考虑使
  • 在 Elasticsearch 中删除文件后回收磁盘空间

    当我从 Elasticsearch 中删除文档时 为什么我的 总大小 保持不变 尽管由于没有以前存储的数据而明显小得多 我读过有关索引优化的内容 但我不确定这是什么或如何做到这一点 Thanks 我确信 SO 和 Google 上都有大量与
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • ElasticSearch 映射对分组文档进行折叠/执行操作的结果

    有一个对话列表 每个对话都有一个消息列表 每条消息都有不同的字段和action场地 我们需要考虑到在对话的第一条消息中使用了动作A 在几条消息之后有使用的动作A 1过了一会儿A 1 1等等 有一个聊天机器人意图列表 对对话的消息操作进行分组
  • Elasticsearch Nest 通配符查询(带空格)

    简洁版本 我想使用 Nest 编写一个弹性搜索查询来获取完整的索引项 ContentIndexables在我的例子中作为我的自定义类型 已被索引 该查询受 some string 术语查询的约束 即 String StartsWith 其中
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse

随机推荐

  • android设置状态栏颜色(沉浸式状态栏)

    设置状态栏颜色的方法是andorid4 4以后支持的 最少要api19以上才可以使用哟 方法如下 第一种 public static void setStatusBarTranslucent ViewGroup vg Activity ac
  • mac os 安装 redis

    mac os 安装 redis 在redis官网下载 https redis io download 1 下载 在mac os系统 双指点击 finder 图标 选 Go to Folder 输入 usr local 另外开一个finder
  • 基于鲸鱼算法改进支持向量机SVM的多分类研究,woa-svm

    目录 背影 支持向量机SVM的详细原理 SVM的定义 SVM理论 鲸鱼算法的原理及步骤 SVM应用实例 鲸鱼算法改进SVM的多分类研究 代码 结果分析 展望 背影 传统的支持向量机只能进行二分类 本文调用libsvm工具箱 并用鲸鱼算法改进
  • 算法编程7:一个四位数 abcd,满足 abcd * 4 = dcba,求这个数

    描述 一个四位数 abcd 满足 abcd 4 dcba 求这个数 编程实现1 for i in list range 1000 2500 num2 i 4 a i 1000 b i 1000 100 c i 1000 100 10 d i
  • 序列化错误小结:SerializationFailedException

    公司项目 不提供具体代码 仅提供思路 问题描述 错误报告MultipartRequest无法实现序列化 问题解决1 发生SerializationFailedException时 第一时间根据错误报告定位错误类 发现MultipartReq
  • 分布式事务专题之9、分布式事务解决方案之最大努力通知型

    目录 1 支付宝充值案例 假如我们自己有一个电商系统 支持用户使用支付宝充值 流程如下 2 用户支付流程 是一个同步的过程 用户在浏览器发起充值请求 gt 电商服务 电商服务生成充值订单 状态为0 待支付 0 待支付 100 支付成功 20
  • 软件产品质量模型

    ISO IEC 9126是国际标准组织 ISO 制订的用于评估软件质量的国际标准1 ISO IEC 9126标准由6个特性和27个子特性组成 是评价软件质量的国际标准1 ISO IEC 9126已经被ISO IEC 25010取代 后者是国
  • STM32刷Micropython固件参考指南

    STM32刷Micropython固件指南 其实刷固件和普通的程序下载烧录无多大的差异 主要是其他因数的影响导致刷固件或刷完固件无法运行的情况和相关问题 刷固件教程 固件下载 目前所支持的stm32型号有这些 stm32f0 stm32f4
  • linux进阶05——Makefile(二)

    1 源代码 main c int main printf hello world n fun1 fun2 fun1 c void fun1 printf this is fun1 n fun2 c void fun2 printf this
  • BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT 个人翻译 并不权威 paper https arxiv org pdf 1810 04805 pdf BERT Pre training of Deep Bidirectional Transformers for Languag
  • sql语句大全+实例讲解

    1 创建3张表 学生表创建 CREATE table student Sno CHAR 9 PRIMARY KEY Sname CHAR 20 UNIQUE Ssex char 2 Sage SMALLINT Sdept char 20 课
  • LCD 驱动

    LCD的型号是 CM162 4 有U1 U2 外形尺寸 L W H mm 80 36 12 点数 mm 5 8 内藏控制器 SPLC 780 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 GND VDD VO
  • vue3+element-plus+js 对列表查询/重置条件 组件简单封装

    在写后台管理的时候会有很多列表 列表上面一般会有查询条件 对列表进行搜索查询 所以就想封装成为组件 就不需要每个页面写一堆的代码 直接循环出来进行遍历即可 1 封装子组件searchForm组件
  • 利用Bat命令批量修改文件名

    因为科研需求 需要把文件名规范统一命名 整体思路 先获得原始文件名字 带后缀 再导到excel里搞好新名字 构建好Bat的ren函数 完成修改 具体措施 1 读取原本文件名称 在相应的文件目录下 新建一个文本文件 并且打开输入 dir b
  • 移动端物理像素和设备独立像素

    https blog csdn net aiolos1111 article details 51880223 https www cnblogs com samwu p 5341056 html http www softwhy com
  • ifconfig命令详解

    在CU论坛里看到一个关于google面试的帖子 当中提到的一个面试题就是ifconfig命令的用法 所以今天就趁些机会在网上找了一些关于ifconfig的文章 转到这边来 大家一起学习 以下转自 http www photox cn IT
  • linux之date命令

    date 命令用于 显示 或 设置系统的时间或日期 格式 date 参数 日期格式 注意 date后面有一个空格 否则无法识别命令 shell对空格是很严格的 1 Linux date命令参数 日期时间格式符号 H 小时 以00 23来表示
  • x = torch.cat((x1, x2), dim=1) dim是什么意思,决定什么变量

    在这个例子中 x torch cat x1 x2 dim 1 意思是将 x1 和 x2 按照第一维拼接起来 得到新的 tensor x 变量 dim 1 决定了拼接的维度
  • re学习(29)攻防世界-CatFly(复原反汇编)

    因为这是一个 dll文件 在Linux上运行一下 找到主要函数 以及由上面三部分对应的代码部分 int64 fastcall main int a1 char a2 char a3 size t v3 rbx int16 v5 4 rsp
  • Docker安装Elasticsearch 8.x 、Kibana 8.x等

    这里我使用的是8 2 0版本 同时内容会介绍ik分词和elastic head的安装 elasticsearch java的配置 1 下载ik分词器插件 下载地址 https github com medcl elasticsearch a