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

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我们可以快速构建,首先拉取镜像

docker pull elasticsearch:8.4.3docker pull kibana:8.4.3

2、获取配置

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

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" 限制内存大小

接着创建持续化目录

mkdir -p {config,data,logs,plugins}

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

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 .

修改配置文件

vi config/elasticsearch.yml

添加如下代码

# 跨域http.cors.allow-origin: "*"http.cors.enabled: truehttp.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

删除临时创建的容器

docker stop elasticsearchdocker rm elasticsearch

3、启动容器

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访问

https://xxx:9201/

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

{    "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、临时容器

docker run -d --name kibana -p 5602:5601 kibana:8.4.3

3、拷贝配置

mkdir -p configdocker cp kibana:/usr/share/kibana/config .

4、修改配置

修改配置

vi config/kibana.yml

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

server.host: "0.0.0.0"server.shutdownTimeout: "5s"elasticsearch.hosts: [ "https://192.168.0.1:9201" ]monitoring.ui.container.elasticsearch.enabled: truei18n.locale: "zh-CN"

5、删除临时容器

docker stop kibanadocker rm kibanadocker run -d --name kibana -p 5602:5601 -v config:/usr/share/kibana/config kibana:8.4.3

6、获取es访问token

进入elasticsearch容器获取token

docker exec -it elasticsearch /bin/bashbin/elasticsearch-create-enrollment-token --scope kibana

获取一段类似下面的代码

eyJ2ZXIiOiI4LjQuMyIsImFkciI6WyIxNzIuMTcuMC42OjkyMDAiXSwiZmdyIjoiNDY3ZTE2MDlkNmU5MzIxYzFkZmNmNDNkYjRkMmNiZDJlNjllYzk2NjBiNjU2NWJmZWQzY2EwNGUwNjA2ZDEzMSIsImtleSI6Im4zem1Ob1FCRlozMXhIOEhMZy1uOjZKRURDUXphUll5a1BVa1JaalFrYVEifQ==

7、获取验证

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

docker exec -it kibana /bin/bash

执行获取验证码命令

bash bin/kibana-verification-code

8、获取es登录密码

登录es容器

docker exec -it elasticsearch /bin/bash

重置elastic的密码

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