How to Set Up ElasticSearch Using Docker

How to set up ElasticSearch using docker

[toc]How to set up ElasticSearch using docker

1 什么是 ElasticSearch?

ElasticSearch 是一个分布式的搜索和分析引擎,主要功能包括全文搜索、结构化数据搜索和实时数据分析。它使用一种称为 倒排索引 的数据结构,可以快速地搜索和分析海量数据,非常适合以下场景:

  • 日志管理:ElasticSearch 能存储和搜索日志数据,因此常用于应用、系统和安全日志的分析。
  • 全文搜索:ElasticSearch 被广泛用于网站和应用的搜索功能,像产品搜索、文件内容搜索等。
  • 数据分析:支持多维度的数据聚合,可以用来快速生成统计信息、趋势分析等。
    ElasticSearch 的优点包括快速的数据索引、分布式架构(可以处理大规模数据)、多租户支持等。

2 什么是 Kibana?

Kibana 是一个开源的数据可视化工具,专门为 ElasticSearch 设计。它提供了直观的图形界面,使用户能够在浏览器中可视化 ElasticSearch 中的数据。Kibana 主要特点包括:
• 数据可视化:Kibana 支持生成各种图表和仪表盘,比如柱状图、饼图、时间序列图等,便于用户查看数据趋势和聚合结果。
• 日志分析:可以用来分析和过滤日志数据,让用户快速找到感兴趣的数据。
• 监控和告警:Kibana 配合 Elastic Stack 可以设置告警,当数据符合特定条件时,触发通知。
• 探索数据:Kibana 有一个“Discover”界面,让用户可以通过简单的搜索查询来探索 ElasticSearch 中的数据,查看具体记录和信息。

3 客户的需求

Environment:
No Docker Compose file should be used; everything should be set up using Docker. Elastic Search and Kibana should be on the latest version (Version 8).
Data Persistence:
The data from Elastic Search should be stored on the system drive at the path ~/elasticsearch/data. It is crucial that this data persists even if the Docker containers are stopped or deleted.

Access and Interface:
There should be an interface for logging in to view and search logs. The setup should run on the IP address: 165.**.**.163.

Developer Access:
Developers should be able to connect their applications to Elastic Search to log their data.

Credentials:
Set the password for Elastic Search to Retail*******

4 安装过程

参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

4.1 安装docker

Apt update && apt install docker.io –y

4.2 安装Elasticsearch

Create a new docker network:

#  docker network create elastic

Pull the Elasticsearch Docker image:

# docker pull docker.elastic.co/elasticsearch/elasticsearch:8.15.4

创建数据目录并刷新权限:

# mkdir /root/elasticsearch/data -p
# chmod 776 /root/elasticsearch/data -R

安装Elasticsearch且挂载本地目录作为Elasticsearch的数据存储目录:

docker run -d --name es01 --net elastic -p 9200:9200 -m 2GB -v /root/elasticsearch/data:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:8.15.4

获取密码(等个5分钟左右再去获取密码,elasticsearch还没完全启动就去获取密码,elasticsearch容器可能会退出):

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

Password for the [elastic] user successfully reset.
New value: yFju-SJLo3kFB3ro=PXz

获取Enrollment token:

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTcyLjE5LjAuMjo5MjAwIl0sImZnciI6IjhiYzJhZmQ4ODhmNjg3NjE1YTA5NDQ1NjgzMzcwY2RiYzkxZGU0ZTEwMzQ4YmQyZWVlMTFlOTQ1ODAwOGZkZDQiLCJrZXkiOiJocGlaVXBNQm94LUZNa3RsaFplTTpJdW5MRTBySFFRR1BUZWwyQlprNUFnIn0=

Copy the http_ca.crt SSL certificate from the container to your local machine:

 docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .

Make a REST API call to Elasticsearch to ensure the Elasticsearch container is running.

export ELASTIC_PASSWORD=”yFju-SJLo3kFB3ro=PXz”

curl --cacert http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
curl --cacert http_ca.crt -u elastic:gpr4QKpb5GLD7ec1zO-A https://localhost:9200

公网访问:

curl --insecure --cacert /root/elasticsearch/http_ca.crt -u elastic: yFju-SJLo3kFB3ro=PXz https:// 108.181.162.135:9200

4.3 安装Kibana

docker pull docker.elastic.co/kibana/kibana:8.15.4
docker run -d --name kib01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.15.4

4.4 配置Kibana

在浏览器打开http://IP:5601 并配置kibana:

输入之前产生的Enrollment token:

获取验证码:

# docker exec -it kib01 /usr/share/kibana/bin/kibana-verification-code

输入验证码:

配置过程中:

输入用户名和密码:

登录Kibana成功:

 

Add Feedback