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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(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.3
docker 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: true
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

删除临时创建的容器

docker stop elasticsearch
docker 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 config
docker 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: true
i18n.locale: "zh-CN"

5、删除临时容器

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

docker exec -it elasticsearch /bin/bash
bin/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

以上是关于(1/2)基于容器化,快速使用ElasticSearch的主要内容,如果未能解决你的问题,请参考以下文章

基于Docker容器化快速搭建Halo个人博客并配置https服务

基于Docker容器化快速搭建Halo个人博客并配置https服务

基于Docker容器化快速搭建Halo个人博客并配置https服务

有赞5000实例,基于Kubernetes容器化实践

基于Docker+Kubernetes,微服务容器化开发实战

快速搞懂容器技术的核心要点