ELK入门教程
发布时间:2022-07-15 14:57:31

一. ELK简介

那么,ELK 到底是什么呢?“ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

先前,数据采集的工作是由Logstash来完成的,但是Logstash消耗性能过多,只用来采集工作着实有点大材小用.2015年,Elastic公司引入轻量级的数据收集框架Beats来协同Logstash,而Logstash用来做数据转换和格式化.

二.ElasticSearch

2.1 ElasticSearch简介

Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件

2.2 Es中的基本概念

2.2.1 索引(index)

  • 索引(index)是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。

  • 可以把索引看成关系型数据库的表,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。

  • Elasticsearch可以把索引存放在一台机器或者分散在多台服务器上,每个索引有一或多个分片(shard),每个分片可以有多个副本(replica。

2.2.2 文档(Document)

  • 存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库表中的一行记录。

  • Elasticsearch和MongoDB中的文档类似,都可以有不同的结构,但Elasticsearch的文档中,相同字段必须有相同类型。

  • 文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段(multivalued)。

  • 每个字段的类型,可以是文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档或者数组。

2.2.3 映射(mapping)

  • 所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条又会被过滤,这种行为叫做 映射(mapping)。一般由用户自己定义规则。

2.2.4 文档类型

  • 在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序可以保存文章和评论。

  • 每个文档可以有不同的结构。

  • 不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫title的字段必须具有相同的类型。

2.2.5 分片和副本

为了将数据添加到Elasticsearch,我们需要索引(index)——一个存储关联数据的地方。实际上,索引只是一个用来指向一个或多个分片(shards)“逻辑命名空间(logical namespace).

  • 一个分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分。

  • 我们需要知道是分片就是一个Lucene实例,并且它本身就是一个完整的搜索引擎。应用程序不会和它直接通信。

  • 分片可以是主分片(primary shard)或者是复制分片(replica shard)。

  • 索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据。

  • 复制分片只是主分片的一个副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档。

  • 当索引创建完成的时候,主分片的数量就固定了,但是复制分片的数量可以随时调整。

2.3 ElasticSearch安装

本文选择在Ubunto18.04中安装es,与windows同理,主要是为了后面方便es集群的建立.虚拟机的安装使用在这里就不赘述了.

2.3.1 下载

Elasticsearch 6.8.4

如果想用xshell等远程工具,可以先开启ssh服务

# 更新源
sudo apt-get update
# 安装ssh服务
sudo apt-get install openssh-server
# 检测启动
ps -e | grep ssh

2.3.2 解压

tar -xvf elasticsearch-6.8.4.tar.gz

2.3.4 安装JDK

sudo apt-get install openjdk-8-jdk

2.3.4 修改elaticsearch.yaml配置

# ---------------------------------- Network -----------------------------------## Set the bind address to a specific IP (IPv4 or IPv6):#network.host: 192.168.68.132 #本机ip## Set a custom port for HTTP:#http.port: 9200## For more information, consult the network module documentation.

2.3.5 启动

./bin/elasticsearch

在浏览器中打开:192:168:68:132:9200

2.3.6 错误解决

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
suod vim /etc/sysctl.conf # 在后面添加vm.max_map_count=262144 sudo /sbin/sysctl -p 生效

2.4 Head插件安装

由于ES官方并没有为ES提供界面管理工具,仅仅是提供了后台的服务。elasticsearch-head是一个为ES开发的一个页 面客户端工具,其源码托管于GitHub:mobz/elasticsearch-head

Head有多种安装方式,可自行百度进行安装,本文仅介绍一种快捷简单的安装方式:chrome浏览器插件安装:

能访问google应用商店的可在商店中直接搜索head,即可进行添加安装.

或者从head的github中下载head的crx拓展进行本地安装:mobz/elasticsearch-head

安装完成后就可将地址输入对elasticsearch进行后台操作

2.5 ElasticSearch简单操作

ES支持RESTFUL风格的请求操作,我们可以选择在head中的复合查询中完成以下简单操作,es支持多种复杂的操作,本文篇幅有限,仅展示几个简单操作,更多复杂操作将之后在其他文章中展示.

2.5.1 建立索引

PUT test

2.5.2 删除索引

DELETE test

2.5.3 获取索引信息

GET test

2.5.4 添加数据

PUT test/user/0001{ 
  "id":1001, 
  "name":"张三", 
  "age":20, 
  "sex":"男" }

2.5.5 更新数据(覆盖更新)

PUT test/user/0001{ 
  "id":1001, 
  "name":"张三", 
  "age":20, 
  "sex":"女" }

2.5.6 删除数据

DELETE test/user/1001

2.5.7 查询数据

GET test/user/_search # 返回多条用户信息


咨询电话
400-068-1180