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