原创做者,公众号【程序员读书】,欢迎关注公众号,转载文章请注明出处哦。node
相信不少作开发的小伙伴对Elasticsearch
应该都听过或有必定的了解吧,毕竟Elasticsearch
是时下最火的开源全文搜索引擎。linux
除了搜索功能以外,Elasticsearch
也是一款大数据分析引擎,能够用于大数据实时分析,好比用于日志分析、指标监控、信息安全等方面,而要完成这些功能,则还须要与其余组件配合,这即是咱们如今要讲的Elastic Stack
。程序员
Elastic Stack
是一套构建在开源基础之上,可让咱们安全可靠地采集任何来源、任何格式的数据,而且实时地对数据进行搜索、分析和可视化工具链。docker
从上面这段定义能够看出Elastic Stack
的几个特色:采集、转换、搜索、分析、可视化,这些功能分别由ElasticSearch
、Kibana
、Beats
、Logstash
这几个组件来实现。api
Elasticsearch
是Elastic Static
的核心,能够用Elasticsearch
来存储咱们的文档数据,利用Elasticsearch强大的搜索和分析功能为咱们的网站提供支持,ElasticSearch
是分布式搜索引擎和大数据实时分析引擎,能够实时分析计算数据并得出结果,还能够经过Kibana
的各类图表将分析结果可视化。浏览器
下面的思惟导图,是我学习Elasticsearch
的一点简单的梳理:安全
一图胜万言,Kibana
是Elastic Stack
产品中的一款可视化工具,支持柱状图、线状图、饼图、旭日图等多种图形,还可使用Vega
语法来设计独属于咱们本身的可视化图形。bash
经过Kibana
能够实时呈现Elastichsearch
聚合分析的数据,看到数据的趋势,为决策提供依据。服务器
Beats
是一个轻量型采集器的平台,集合了多种轻量级的、单一的数据采集器,几乎能够兼容全部的数据类型,这些采集器能够从成千上万的系统中采集数据并向Logstash
和Elasticsearch
发送数据。restful
下面是Beats
支持的采集器列表:
固然,若是上面提供的采集器没法知足咱们的需求,Beats
也支持自定义采集器。
Logstash
是开源的服务器端数据处理管道,可以同时从多个来源采集数据,转换数据,而后将数据发送到您最喜欢的存储库中,通常就是发送到Elasticsearch
当中。
从上面的定义中,咱们能够看出,Logstash
与Beats
有相似的功能,而实际上,Logstash
的功能比Beats
更强大,Logstash
支持丰富的过滤器,能够经过过滤器将很是结构化的数据转换成结构化的数据,以下图所示:
经过上面的介绍,咱们应该对Elastich Stack
中各个组件的功能有所了解,下面咱们经过示图意了解一下各组件之间的关系:
Elastic Stack
支持多种不一样的操做系统,不一样的操做系统也支持多种不一样的安装方式,咱们只是介绍在Linux
操做系统的安装过程,使用的版本是最新的7.2
。
在7.0
以前的版本,安装Elasticsearch
以前须要先安装Java SDK
,在7.0
以后,在Elasticsearch
的安装中包含了Java SDK
ElasticSearch
支持多种操做系统,下面的示例是在Linux
上的安装过程:
# 下载压缩安装包
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0-linux-x86_64.tar.gz
# 解压
$ tar -zxvf elasticsearch-7.2.0-linux-x86_64.tar.gz
# 修改安装目录名称,不改也能够的
$ mv elasticsearch-7.2.0-linux-x86_64 /usr/local/elasticsearch
复制代码
安装的过程很是简单,直接解压即可以了。
# 进入到elasticsearch安装目录
$ cd /usr/local/elasticsearch
# 在elasticsearch安装目录运行如下命令
$ bin/elasticsearch
复制代码
除了本身下载安装外,能够elasticsearch的docker镜像进行安装,这种方式也很方便。
# 拉取elasticsearch的docker镜像
$ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.2.0
# 运行镜像,建立容器
$ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.2.0
复制代码
在浏览器输入地址http://localhost:9200
,或使用在命令行中使用curl
工具,输入如下语句:
$ curl http://localhost:9200
复制代码
若是在浏览器或命令中输出以下Elasticsearch的状态信息,则说明已经安装成功。
{
"name" : "localhost.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "IcfpUJx8TOOU9udd2fXWkw",
"version" : {
"number" : "7.2.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "508c38a",
"build_date" : "2019-06-20T15:54:18.811730Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
复制代码
在安装成功后,即可以调用Elasticsearch
提供的restful api
,往Elasticsearch
建立索引和文档,开始Elasticsearch
的学习了。
# 使用wget命令获取安装包
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.2.0-linux-x86_64.tar.gz
#解压
$ tar -zxvf kibana-7.2.0-linux-x86_64.tar.gz
# 修改安装目录名称,不改也能够的
$ mv kibana-7.2.0-linux-x86_64 /usr/local/kibana
复制代码
上面简单两条命令便已经安装好了kibana
。
安装成功后,可使用如下命令启动kibana
。
# 进入kibana安装目录
$ cd /usr/local/kibana
# 运行命令启动
$ bin/kibana
复制代码
安装成功后,Kibana默认运行在5601
端口,所以在浏览器中输入http://localhost:5601
,若是安装成功,则会进入以下界面:
Beats
是一个多种单一采集器的平台,每一种采集器都须要单独安装,所以咱们能够根据本身的须要进行安装,下面以Filebeat
安装为例:
# 下载安装包
$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz
# 解压
$ tar -zxvf filebeat-7.2.0-linux-x86_64.tar.gz
# 修改安装目录名称,不改也能够的
$ mv filebeat-7.2.0-linux-x86_64 /usr/local/filebeat
复制代码
# 启动
/usr/local/filebeat/filebeat -e -c filebeat.yml
复制代码
# 下载
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.tar.gz
#解压
$ tar -zxvf logstash-7.2.0.tar.gz
# 修改安装目录名称,不改也能够的
$ mv logstash-7.2.0 /usr/local/logstash
复制代码
启动logstash
时,须要指定一个配置文件,配置文件的结构通常是下面的结构,input
指定数据来源,filter
指定过滤器,output
指定输出。
input {
...
}
filter {
...
}
output {
...
}
复制代码
好比咱们使用下面的logstash.conf
文件,将一个txt
文件的每一行记录导入到elasticsearch
中:
input {
file {
path => "/data/users.txt"
start_position => beginning
}
}
filter {
txt {
separator => ","
columns => ["id","username","age"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "user_list"
document_id => "%{id}"
}
stdout {}
}
复制代码
接下来使用下面的命令,即可以启动logstash
了。
# 运行
logstash -f logstash.conf
复制代码
在这篇文章中,咱们只是对Elastic Stack
创建一个全面的了解以及如何安装,而对Elastic Stack
的使用与开发,则须要在后续中更多地学习。
你的关注,是我写做路上最大的鼓励!