(1/2)基于容器化,快速使用ElasticSearch

2023-08-23 13:49:42 浏览数 (1)

Elasticsearch 是一个分布式的、开源的搜索分析引擎,支持各种数据类型,包括文本、数字、地理、结构化、非结构化。

Elasticsearch 是基于 Apache Lucene 的。Elasticsearch 因其简单的 REST API、分布式特性、高速、可扩展而闻名。

Elasticsearch 是 Elastic 产品栈的核心,Elastic 产品栈是个开源工具集合,用于数据接收、存储、分析、可视化。

一、可以用来做什么?

1、可以很好地存储和查询文档,用于应用程序搜索、企业搜索和网站搜索。

2、日志存储和索引

使用 ELK,轻松存储和分析日志。ELK 还通常用于监控基础信息、应用程序性能和使用情况。

3、地理数据存储和分析

在各类场景中,可以抽象出2种数据类型

4、静态数据 Elasticsearch 用作搜索引擎。

5、时间序列数据 时序数据发送到 Elasticsearch,用于产品分析、报告、异常检测 ……

6、一个完整的生态

Elasticsearch 是 Elastic 产品栈的核心。其中的工具可以帮助你实现可视化(Kibana)、接入(Beats、Logstash)和管理存储在 Elasticsearch 中的数据。

二、快速安装

1、拉取镜像

通过docker我们可以快速构建,首先拉取镜像

代码语言:javascript复制
docker pull elasticsearch:8.4.3
docker pull kibana:8.4.3

2、获取配置

这里先临时起一个容器实例, 然后通过命令把容器中的配置拷贝一份出来方便我们做持续化

代码语言:javascript复制
docker run -d --name elasticsearch 
-p 9201:9200 
-p 9301:9300 -e "discovery.type=single-node" 
elasticsearch:8.4.3
参数说明
-d 后台启动
–name 起别名即:NAMES
-p 9200:9200 将端口映射出来  elasticsearch的9200端口是供外部访问使用;9300端口是供内部访问使用集群间通讯
-e "discovery.type=single-node"单节点启动
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" 限制内存大小

接着创建持续化目录

代码语言:javascript复制
mkdir -p {config,data,logs,plugins}

接着从容器中拷贝文件出来

代码语言:javascript复制
docker cp elasticsearch:/usr/share/elasticsearch/config .
docker cp elasticsearch:/usr/share/elasticsearch/logs .
docker cp elasticsearch:/usr/share/elasticsearch/data .
docker cp elasticsearch:/usr/share/elasticsearch/plugins .

修改配置文件

代码语言:javascript复制
vi config/elasticsearch.yml

添加如下代码

代码语言:javascript复制
# 跨域
http.cors.allow-origin: "*"
http.cors.enabled: true
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

删除临时创建的容器

代码语言:javascript复制
docker stop elasticsearch
docker rm elasticsearch

3、启动容器

代码语言:javascript复制
docker run -d --name elasticsearch 
-p 9201:9200 
-p 9301:9300 
-e "discovery.type=single-node" 
-v logs:/usr/share/elasticsearch/logs 
-v data:/usr/share/elasticsearch/data 
-v plugins:/usr/share/elasticsearch/plugins 
elasticsearch:8.4.3

-v config:/usr/share/elasticsearch/config 

4、测试访问

注意这里需要https访问

代码语言:javascript复制
https://xxx:9201/

访问提示登录,我们暂时登录,出现一段json就说明创es建成功了

代码语言:javascript复制
{
    "error": {
    "root_cause": [
    {
    "type": "security_exception",
    "reason": "missing authentication credentials for REST request [/]",
    "header": {
    "WWW-Authenticate": [
    "Basic realm="security" charset="UTF-8"",
    "Bearer realm="security"",
    "ApiKey"
    ]
    }
    }
    ],
    "type": "security_exception",
    "reason": "missing authentication credentials for REST request [/]",
    "header": {
    "WWW-Authenticate": [
    "Basic realm="security" charset="UTF-8"",
    "Bearer realm="security"",
    "ApiKey"
    ]
    }
    },
    "status": 401
}

三、其他中间件安装

1、Kibana

Kibana是用于Elasticsearch的源可用数据可视化仪表板软件,其OpenSearch的免费和开源继承者是OpenSearch Dashboards

2、临时容器

代码语言:javascript复制
docker run -d --name kibana -p 5602:5601 kibana:8.4.3

3、拷贝配置

代码语言:javascript复制
mkdir -p config
docker cp kibana:/usr/share/kibana/config .

4、修改配置

修改配置

代码语言:javascript复制
vi config/kibana.yml

修改es的访问端口和ip,添加中文配置

代码语言:javascript复制
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "https://192.168.0.1:9201" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"

5、删除临时容器

代码语言:javascript复制
docker stop kibana
docker rm kibana
docker run -d --name kibana -p 5602:5601 
-v config:/usr/share/kibana/config 
kibana:8.4.3

6、获取es访问token

进入elasticsearch容器获取token

代码语言:javascript复制
docker exec -it elasticsearch /bin/bash
bin/elasticsearch-create-enrollment-token --scope kibana

获取一段类似下面的代码

代码语言:javascript复制
eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxNzIuMTcuMC42OjkyMDAiXSwiZmdyIjoiNDY3ZTE2MDlkNmU5MzIxYzFkZmNmNDNkYjRkMmNiZDJlNjllYzk2NjBiNjU2NWJmZWQzY2EwNGUwNjA2ZDEzMSIsImtleSI6Im4zem1Ob1FCRlozMXhIOEhMZy1uOjZKRURDUXphUll5a1BVa1JaalFrYVEifQ==

7、获取验证

当验证estoken后,让你输入kibana的六位数随机码,此时我们需要登录kibana容器

代码语言:javascript复制
docker exec -it kibana /bin/bash

执行获取验证码命令

代码语言:javascript复制
bash bin/kibana-verification-code

8、获取es登录密码

登录es容器

代码语言:javascript复制
docker exec -it elasticsearch /bin/bash

重置elastic的密码

代码语言:javascript复制
bash bin/elasticsearch-reset-password -u elastic

此时会让你输入y确定,New value后面就是生成密码

This tool will reset the password of the [elastic] user to an autogenerated value. The password will be printed in the console. Please confirm that you would like to continue [y/N] y Password for the [elastic] user successfully reset. New value: hAs4NSGDoNrnjfzmSWy1

9、登录成功

登录确认页面,

默认的情况是添加 integrations。这个是用来导入数据到 Elasticsearch 中的。

点击 Explore on my own:

这样就成功地进入到 Kibana 界面。

至此,我们已经成功地通过 docker 启动了 Elasticsearch 及 Kibana

0 人点赞