前言
学习谷粒商城基础片完结后便开启了高级部分的学习,高级部分的第一章节 Elasticsearch 搜索和分析引擎。文档地址:elasticsearch中文文档地址
一、Elasticsearch 简介
1.1 Elasticsearch 是什么?
Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。
1.2 Elasticsearch 的用途
Elasticsearch 在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,这意味着其可用于多种用例:
- 应用程序搜索
- 网站搜索
- 企业搜索
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
1.3 Elasticsearch 工作原理
原始数据会从多个来源(包括日志、系统指标和网络应用程序)输入到 Elasticsearch 中。数据采集指在 Elasticsearch 中进行索引之前解析、标准化并充实这些原始数据的过程。这些数据在 Elasticsearch 中索引完成之后,用户便可针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。在 Kibana 中,用户可以基于自己的数据创建强大的可视化,分享仪表板,并对 Elastic Stack 进行管理
1.4 Logstash 的用途
Logstash 是 Elastic Stack 的核心产品之一,可用来对数据进行聚合和处理,并将数据发送到 Elasticsearch。Logstash 是一个开源的服务器端数据处理管道,允许您在将数据索引到 Elasticsearch 之前同时从多个来源采集数据,并对数据进行充实和转换。
1.5 Kibana 的用途
Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序;Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。
二、Docker 安装ES和Kibana
2.1 下载镜像文件
#存储和检索数据
docker pull elasticsearch:7.4.2
#可视化检索数据
docker pull kibana:7.4.2
若出现如下错误,则表明连接超时,我们更换镜像即可。
Unable to find image 'elaticsearch' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
解决方案
1.执行如下命令
vim /etc/docker/daemon.json
2.粘贴到daemon.json文件中
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
3.重启docker容器
systemctl restart docker
若出现如下错误,则表明虚拟机未联网,需要将虚拟机联网。
Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:39306->[::1]:53: read: connection refused
解决方案
1.解决centos7连不上网络的问题链接
2.解决后执行 docker pull elasticsearch:7.4.2 和 docker pull kibana:7.4.2 完成镜像下载。
2.2 创建实例
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/ 保证权限
[root@localhost config]# docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.4.2
146e8018abb25ea77482783685d6279b0ad2b23f7153f16f83c467f3bb4ca594
[root@localhost config]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
146e8018abb2 elasticsearch:7.4.2 "/usr/local/bin/dock…" About a minute ago Up About a minute 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
e22de2962734 redis "docker-entrypoint.s…" 6 weeks ago Up 8 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
62bab71c9c70 mysql:5.7 "docker-entrypoint.s…" 8 months ago Up 8 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
以后再外面装好插件重启即可; 特别注意: -e ES_JAVA_OPTS=“-Xms64m -Xmx256m” \ 测试环境下,设置 ES 的初始内存和最大内存,否则导 致过大启动不了 ES
[root@localhost config]# docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.220.131:9200 -p 5601:5601 -d kibana:7.4.2
e8df2cb8d0ef66d3ee8c02c0eb015d174cef731b61feb8711a4cf84c9d5e849d
[root@localhost config]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8df2cb8d0ef kibana:7.4.2 "/usr/local/bin/dumb…" 53 seconds ago Up 51 seconds 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp kibana
146e8018abb2 elasticsearch:7.4.2 "/usr/local/bin/dock…" 33 minutes ago Up 33 minutes 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
e22de2962734 redis "docker-entrypoint.s…" 6 weeks ago Up 40 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
62bab71c9c70 mysql:5.7 "docker-entrypoint.s…" 8 months ago Up 40 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
http://192.168.220.131:9200 一定改为自己虚拟机的地址
访问 Elasticsearch 出现如下界面,则说明安装成功。
访问 Kibana出现如下界面,则说明安装成功。