本篇主要内容如下:
主要内容前言项目中我们总是用Kibana界面来搜索测试或生产环境下的日志,来看下有没有异常信息。Kibana就是我们常说的ELK中的K。
Kibana界面如下图所示:
Kibana界面但这些日志检索原理是什么呢?这里就该我们的Elasticsearch搜索引擎登场了。
我会分为三篇来讲解Elasticsearch(简称ES)的原理、实战及部署。本篇是讲解ES的上篇。
上篇:讲解ES的原理、中文分词的配置。中篇:实战ES应用。下篇:ES的集群部署。为什么要分成三篇,因为每一篇都很长,而且侧重点不一样,所以分成三篇来讲解。
一、Elasticsearch简介1.1什么是Elasticsearch?Elasticsearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。简单来说只要涉及搜索和分析相关的,ES都可以做。
1.2Elasticsearch的用途?Elasticsearch在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,这意味着其可用于多种用例:
比如一个在线网上商店,您可以在其中允许客户搜索您出售的产品。在这种情况下,您可以使用Elasticsearch存储整个产品目录和库存,并为它们提供搜索和自动完成建议。搜索手机比如收集日志或交易数据,并且要分析和挖掘此数据以查找趋势,统计信息,摘要或异常。在这种情况下,您可以使用Logstash(Elasticsearch/Logstash/Kibana堆栈的一部分)来收集,聚合和解析数据,然后让Logstash将这些数据提供给Elasticsearch。数据放入Elasticsearch后,您可以运行搜索和聚合以挖掘您感兴趣的任何信息。1.3Elasticsearch的工作原理?ELK原理图Elasticsearch是在Lucene基础上构建而成的。ES在Lucence上做了很多增强。
Lucene是apache软件基金会4的jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。(来自百度百科)
Elasticsearch的原始数据从哪里来?
原始数据从多个来源(包括日志、系统指标和网络应用程序)输入到Elasticsearch中。
Elasticsearch的数据是怎么采集的?
数据采集指在Elasticsearch中进行索引之前解析、标准化并充实这些原始数据的过程。这些数据在Elasticsearch中索引完成之后,用户便可针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。这里用到了Logstash,后面会介绍。
怎么可视化查看想要检索的数据?
这里就要用到Kibana了,用户可以基于自己的数据进行搜索、查看数据视图等。
1.4Elasticsearch索引是什么?Elasticsearch索引指相互关联的文档集合。Elasticsearch会以JSON文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数值组、地理位置或其他类型的数据)之间建立联系。
Elasticsearch使用的是一种名为倒排索引的数据结构,这一结构的设计可以允许十分快速地进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。
在索引过程中,Elasticsearch会存储文档并构建倒排索引,这样用户便可以近实时地对文档数据进行搜索。索引过程是在索引API中启动的,通过此API您既可向特定索引中添加JSON文档,也可更改特定索引中的JSON文档。
1.5Logstash的用途是什么?Logstash就是ELK中的L。
Logstash是ElasticStack的核心产品之一,可用来对数据进行聚合和处理,并将数据发送到Elasticsearch。Logstash是一个开源的服务器端数据处理管道,允许您在将数据索引到Elasticsearch之前同时从多个来源采集数据,并对数据进行充实和转换。
1.6Kibana的用途是什么?Kibana是一款适用于Elasticsearch的数据可视化和管理工具,可以提供实时的直方图、线性图等。
1.7为什么使用ElasticsearchES很快,近实时的搜索平台。ES具有分布式的本质特质。ES包含一系列广泛的功能,比如数据汇总和索引生命周期管理。官方文档: