【Docker】ES、Kibana及IK安装配置

news2024/9/20 18:37:39

 目录

一.单节点安装部署

1.版本选择

2.推荐及总结

​3.官网下载地址

4.创建网络

5.拉取镜像

6.创建文件夹

7.运行docker命令

二、安装kibana

1.安装kibana

2.浏览器访问

3.国际化

三、Elasticsearch查询

1.数据插入:POST或PUT

2.数据查询GET

3.分词测试

四、安装分词器IK

(一)手动安装

1.下载IK安装包

2.解压IK,修改plugin-descriptor.properties 文件

(二)在线安装IK

1.在线安装IK

2.浏览器访问

3.测试


一.单节点安装部署

1.版本选择

[支持一览表 | Elastic]

2.推荐及总结

  •  ES 7.x 及之前版本,选择 Java 8
  •  ES 8.x 及之后版本,选择 Java 17 或者 Java 18,建议 Java 17,因为对应版本的 Logstash 不支持 Java 18
  •  Java 9、Java 10、Java 12 和 Java 13 均为短期版本,不推荐使用
  •  M1(Arm) 系列 Mac 用户建议选择 ES 7.8.x 以上版本,因为考虑到 ELK 不同产品自身兼容性,7.8.x以上版本原生支持 Arm 原生 JDK

​3.官网下载地址

Past Releases of Elastic Stack Software | Elastic

以下安裝教程选择7.x 的最新版本:<strong> 7.17.15</strong>

注:建议选择7.15.5或7.17.6 ,因为分词器的版本最高为7.17.6。当然,安装7.17.15也有对应的解决办法。

4.创建网络

docker network create elastic

5.拉取镜像

docker  pull  elasticsearch:7.17.15

6.创建文件夹

创建数据、日志、插件存放文件夹

mkdir -p {'/docker/es/data','/docker/es/logs','/docker/es/plugins','/docker/es/config'}

7.运行docker命令

docker run -d \
-p 9200:9200 \
--restart=always \
--name es \
-v /docker/es/logs:/usr/share/elasticsearch/logs \
-v /docker/es/data:/usr/share/elasticsearch/data \
-v /docker/es/plugins:/usr/share/elasticsearch/plugins \
-v /docker/es/config:/usr/share/elasticsearch/config \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms256m -Xmx256m" \
-e "TAKE_FILE_OWNERSHIP=true" \
--network elastic --privileged elasticsearch:7.17.15


# 命令解释:
# -p 9200:9200:端口映射配置
# restart=always:开机启动
# -e “discovery.type=single-node”:非集群模式
# -e “ES_JAVA_OPTS=-Xms512m -Xmx512m”:设置内存,如果服务器内存不是很大,这里设置小点,否则服务将起不来
# -v 本地目录:逻辑目录
# -v /usr/local/es/single/logs:/usr/share/elasticsearch/logs 挂载逻辑卷,绑定es的日志目录
# -v /usr/local/es/single/data:/usr/share/elasticsearch/data 挂载逻辑卷,绑定es的数据目录
# -v /usr/local/es/single/plugins:/usr/share/elasticsearch/plugins 挂载逻辑卷,绑定es的插件目录
# --network elastic 加入一个名为elastic的网络中
# –privileged 允许访问挂载目录
# --name es 容器名
# TAKE_FILE_OWNERSHIP:挂载权限问题,绑定-挂载本地目录或文件,请确保该用户能够读懂它,而数据和日志dirs则需要另外的写访问权限。一个好的策略是为本地目录授予组对gid 1000或0的访问权限

浏览器访问http://xxxxxx:9200

二、安装kibana

[支持一览表 | Elastic]

即es是哪个版本,kibana就安装对应的版本即可

1.安装kibana

docker  pull  kibana:7.17.15
docker run -d \
-p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://es:9200" \
--network=elastic \
--name kibana kibana:7.17.15

# 命令解释
# -p 5601:5601 端口映射
# –network elastic 加入一个名为elastic的网络中,与elasticsearch在同一个网络中
# -e ELASTICSEARCH_HOSTS=http://127.0.0.1:9200 设置elasticsearch的地址,也可以用es容器名,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch

2.浏览器访问

http://xxxxx:5601

3.国际化

# 将容器内的配置拷贝到本地
docker cp 容器id:/usr/share/kibana/config/kibana.yml /usr/local/kibana/kibana.yml
# 修改配置文件,添加国际化后保存
i18n.locale: "zh-CN"
# 将修改后的配置拷贝到容器内
docker cp /usr/local/kibana/kibana.yml 容器id:/usr/share/kibana/config/kibana.yml
# 重启kibana
docker restart kibana

三、Elasticsearch查询

1.数据插入:POST或PUT

PUT /mytest/user/1
{
  "name": "李四lisi",
  "age": 21,
  "car": "宝马x5"
}
# 结果
{
  "_index" : "mytest",
  "_type" : "user",
  "_id" : "1",
  "_version" : 3,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 3,
  "_primary_term" : 1
}

2.数据查询GET

# 根据id进行查询
GET /mytest/user/1
# 结果:
{
  "_index" : "mytest",
  "_type" : "user",
  "_id" : "1",
  "_version" : 3,
  "_seq_no" : 3,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "李四lisi",
    "age" : 21,
    "car" : "宝马x5"
  }
}

# 查当前索引下所有数据
GET /mytest/user/_search
#结果:
{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "mytest",
        "_type" : "user",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "name" : "张三,zhangsan",
          "age" : 21,
          "car" : "奥迪a6l"
        }
      },
      {
        "_index" : "mytest",
        "_type" : "user",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "李四lisi",
          "age" : 21,
          "car" : "宝马x5"
        }
      }
    ]
  }
}
# 查当前索引下多个id的数据
GET /mytest/user/_mget
{
  "ids": ["1","2"]
}
#结果:
{
  "docs" : [
    {
      "_index" : "mytest",
      "_type" : "user",
      "_id" : "1",
      "_version" : 3,
      "_seq_no" : 3,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "name" : "李四lisi",
        "age" : 21,
        "car" : "宝马x5"
      }
    },
    {
      "_index" : "mytest",
      "_type" : "user",
      "_id" : "2",
      "_version" : 1,
      "_seq_no" : 2,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "name" : "张三,zhangsan",
        "age" : 21,
        "car" : "奥迪a6l"
      }
    }
  ]
}

3.分词测试

如果没装分词器,中文分词不是很友好,结果如下:

#分词查询
GET _analyze
{
    "analyzer": "standard",
    "text": "宝马x5"
}
#结果:
{
  "tokens" : [
    {
      "token" : "宝",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "马",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "x5",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "<ALPHANUM>",
      "position" : 2
    }
  ]
}

四、安装分词器IK

(一)手动安装

IK版本必须和es版本一致,由于安装的es版本为7.17.15,而 当前 ik的最新版本为7.17.6,因此不能在线安装,改为手动安装

在线安装时报错:

Plugin [analysis-ik] was built for Elasticsearch version 7.17.6 but version 7.17.15 is running

1.下载IK安装包

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.6/elasticsearch-analysis-ik-7.17.6.zip

2.解压IK,修改plugin-descriptor.properties 文件

 

 

 将修改后的IK复制到es容器内:

# d26e72805e83 为容器id,docker ps 即可查看
docker cp /home/ik/ d26e72805e83:/usr/share/elasticsearch/plugins/ik

然后重启es即可

# es 你的容器名称
docker restart es

(二)在线安装IK

1.在线安装IK

# 查看es容器id
docker ps
# 进入容器内部
docker exec -it 容器id /bin/bash
# 在线下载安装IK
./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.6/elasticsearch-analysis-ik-7.17.6.zip

# 退出容器
exit
# 重启容器
docker restart 容器id

2.浏览器访问

http://xxxxx:5601/app/dev_tools#/console

3.测试

IK分词安装后有两种分词策略:ik_smart,ik_max_word。其中ik_smart称为智能分词,网上还有别的称呼:最少切分,最粗粒度划分。ik_max_word称为最细粒度划分。

ik_max_word:对输入文本根据词典穷尽各种分割方法是细力度分割策略。

ik_smart:会对输入文本根据词典以及歧义判断等方式进行一次最合理的粗粒度分割。

ik_max_word 测试

GET _analyze
{
    "analyzer": "ik_max_word",
    "text": "宝马x5"
}

#结果:
{
  "tokens" : [
    {
      "token" : "宝马",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "x5",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "LETTER",
      "position" : 1
    },
    {
      "token" : "x",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "ENGLISH",
      "position" : 2
    },
    {
      "token" : "5",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "ARABIC",
      "position" : 3
    }
  ]
}

ik_smart测试

GET _analyze
{
    "analyzer": "ik_smart",
    "text": "宝马x5"
}

#结果:
{
  "tokens" : [
    {
      "token" : "宝马",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "x5",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "LETTER",
      "position" : 1
    }
  ]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1312284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用java调用python批处理将pdf转为图片

你可以使用Java中的ProcessBuilder来调用Python脚本&#xff0c;并将PDF转换为图片。以下是一个简单的Java代码示例&#xff0c;假设你的Python脚本名为pdf2img.py&#xff1a; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…

Linux arm架构下构建Electron安装包

上篇文章我们介绍 Electron 基本的运行开发与 windows 安装包构建简单流程&#xff0c;这篇文章我们从零到一构建 Linux arm 架构下安装包&#xff0c;实际上 Linux arm 的构建流程&#xff0c;同样适用于 Linux x86 环境&#xff0c;只不过需要各自的环境依赖&#xff0c;Linu…

图文教程:从0开始安装stable-diffusion

现在AI绘画还是挺火&#xff0c;Midjourney虽然不错&#xff0c;但是对于我来说还是挺贵的。今天我就来安一下开源的AI绘画stable-diffusion,它的缺点就是对电脑的要求比较高&#xff0c;尤其是显卡。 话不多说开搞。 访问sd的github&#xff0c;https://github.com/AUTOMATIC…

西南科技大学数字电子技术实验四(基本触发器逻辑功能测试及FPGA的实现)预习报告

一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结果,不得分,页数可根据内容调整) (1)D触发器 特征方程: Q…

基于python实现原神那维莱特开转脚本

相信不少原友都抽取了枫丹大C那维莱特&#xff0c;其强力的输出让不少玩家爱不释手。由于其转的越快&#xff0c;越不容易丢伤害的特点&#xff0c;很多原友在开转时容易汗流浃背&#xff0c;所以特意用python写了一个自动转圈脚本&#xff0c;当按住鼠标侧键时&#xff0c;即可…

苹果手机怎么将图片转为excel/word?

第一种方案就是用苹果手机自带的OCR功能来实现需求&#xff0c;但低版本的IOS系统不支持此功能&#xff0c;目前已知IOS15以上版本可以支持&#xff0c;只需要在“设置”--“相册”那打开“实况文本”即可&#xff0c;如下图。 IOS15系统打开“实况文本” 开启后&#xff0c;打…

零信任 SASE 办公安全解决方案:提升企业网络安全与灵活性

​零信任 SASE&#xff08;Secure Access Service Edge&#xff09;办公安全解决方案为企业带来了许多好处&#xff0c;相较于以前的解决方案有明显差异。这个方案的出现是为了应对企业面临的新的网络安全挑战和远程办公的需求。 1、统一的网络安全管理&#xff1a;SASE 将网络…

语音机器人话术设计重点

要使用语音机器人&#xff0c;首先得要先准备一套业务的话术脚本&#xff0c;这个话术脚本的设计&#xff0c;可能直接决定了语音机器人后续的使用效果。这个脚本的编写一般不是机器人厂家直接能完成的&#xff0c;只有业务的使用方&#xff0c;他们才最了解自己的业务&#xf…

modbus TCP 应用

Modbus TCP 应用介绍 一、原理 Modbus TCP/IP 协议是工业通信系统领域的基石。它是一种与以太网结合使用的应用层消息传递协议&#xff0c;可实现不同类型网络上连接的设备之间的客户端/服务器通信。Modbus 最初是一种 Modbus 串行协议 (Modbus RTU)&#xff0c;现已发展到包…

[笔记] iperf3.1.3源码下载与交叉编译

由于需要测试一款40G网卡&#xff0c;下载了 iperf3.1.3 用于性能测试。 iperf3.1.3 源码下载 可以在 iperf 官网 下载源代码&#xff1a; 交叉编译 需要运行在 aarch64 linux 环境下&#xff0c;所以需要交叉编译。 进入iperf3 目录下&#xff0c;运行 ./configure 脚本…

java项目dependences下面报错,红色波浪线

1&#xff0c;问题&#xff1a;java项目dependences下面波浪线 方法一&#xff1a;重新加载maven依赖&#xff08;未解决&#xff09; 报错: [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ----------------…

Leetcode—230.二叉搜索树中第K小的元素【中等】

2023每日刷题&#xff08;六十&#xff09; Leetcode—230.二叉搜索树中第K小的元素 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nul…

智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MA…

三、创建型模式——工厂方法模式

微信公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 注意工厂方法模式中工厂的方法不是静态的 简单工厂模式有一个问题就是&#xff0c;类的创建依赖工厂类&#xff0c;也就是说&#xff0c;如果想要…

luttuce(RedisTempate)实现hash expire lua脚本

话不多说先放脚本&#xff1a; local argv ARGV local length #argv if length > 0 then local unpackArgs {} for i 1, length - 1 dotable.insert(unpackArgs, argv[i]) end if redis.call(exists, KEYS[1]) 1 thenredis.call(del, KEYS[1])redis.call(hset, KEYS[…

程序员自由创业周记#16:备案和十月收支

程序员自由创业周记#16&#xff1a;备案和十月收支 政策 众所周知&#xff0c;从今年9月26日开始&#xff0c;新App必须在工信部备案获得备案号才能在Apple Store上架&#xff0c;之前上架的App需要在24年3月31之前完成备案。消息一出&#xff0c;国内独立开发者纷纷嚷着要出海…

Java版企业电子招标采购系统源码—鸿鹄电子招投标系统-企业战略布局下的采购寻源

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

【STM32】USART串口协议

1 通信接口 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 USRT&#xff1a;TX是数据发送引脚&#xff0c;RX是数据接受引脚&#xff1b; I2C&#xf…

基于SSM的高校疫情管理系统设计与实现论文

摘 要 当下疫情不容松懈&#xff0c;此次新冠肺炎疫情是传播速度最快、感染范围最广、防控难度最大的一次重大突发公共卫生事件&#xff0c;疫情防控尤为重要&#xff0c;传统的基于纸质文本的疫情信息管理模式&#xff0c;效率低&#xff0c;无法满足管理需求&#xff0c;所以…