ElasticSearch简单介绍
1.是什么
logstash+filebeats只是解决了把日志收集过来的问题,kibana又只是解决可视化的问题.
那么大量数据查的慢这个问题谁来解决呢?
ElasticSearch(又称es、ES),就决定是你了!
Elasticsearch是发生索引,搜索和分析数据的软件。就像是一个加工厂,把之前日志采集系统采集的原材料加工一下,建立索引,然后提供符合RESTful形式的API。当Kibana发送Http请求的时候输出JSON格式的数据交给Kibana渲染展示。
2. 解决了什么问题
2.1 Lucene使用的复杂性
Apache Lucene是一个Java写的全文检索的工具包,Elasticsearch基于Apache Lucene构建的, 它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene的复杂性,取而代之的提供一套简单一致的 RESTful API。
2.2 大量数据下可靠性要求高的难题
随着现在分布式的服务器端软件越来越多,软件所产生的日志也越来越多。我们希望这些日志能够不丢失,并且再多也能存下来。这就靠Elasticsearch来解决了高可用和可拓展性上的要求。
3. 优缺点
3.1 优点
相对于Lucene开箱即用
集成了Lucene的功能,并且隐藏了Lucene的复杂性
高可用
毕竟分布式,坏了一台,别的还能顶上,自然就有高可用的优势
可拓展
ElasticSearch 可以很方便的拓展机器。高可用也好,可以水平拓展也好,其实这两个性质都是由分布式的性质带来的。
扩容可以通过购买性能更强大( 垂直扩容 ,或 纵向扩容 ) 或者数量更多的服务器( 水平扩容 ,或 横向扩容 )来实现。但是垂直扩容是有极限的。 但是真正的扩容能力还是来自于水平扩容—为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中。
对于大多数的数据库而言,通常需要对应用程序进行非常大的改动,才能利用上横向扩容的新增资源。
ElastiSearch天生就是分布式的 ,它知道如何通过管理多节点来提高扩容性和可用性。
集群内的原理 | Elasticsearch: 权威指南 | Elastic
数据存储灵活
实际上这是一个Nosql形式的软件,的使用json的方式存储,本质就是key-value,可以将我们的对象按对象的方式来存储。这样我们就能更加专注于使用数据,而不是受困于关系型数据库的的限制,必须对我们的应用建模。
3.2 待优化点
4.基本使用
4.1 集群部署
这里需要按照文档搭建一下,里面有很多配置的细节很头疼。搭建出来以后可以再写一下
4.2 REST API
可以用符合REST API规范的这样一种Http协议和ElasticSearch沟通。实际上这个工作我们也不用管,后面会有一个组件叫做Kibana,他就是一个web软件,我们在上面的点点点,就自动被软件转换成和ElasticSearch交互的HTTP请求,在请求里就自动调用REST API和ElasticSearch通信了。
5.基本原理
5.1 索引、文档
我们往 Elasticsearch 添加数据时需要用到 索引( 保存相关数据的地方)。 索引实际上是指向一个或者多个物理分片的逻辑命名空间 。
Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位。文档会被序列化成JSON格式,保存在 Elasticsearch中。每个文档都有一个 Unique ID。一篇文档包含了一系列的字段。类似数据库表中一条记录。
Elasticsearch中的索引、文档的概念和传统数据库进行对应就比较明白了,左边一列是传统数据库,右边一列是ES的数据库:
5.2 分片
主分片和副本
Elasticsearch 是利用分片将数据分发到集群内各处的。分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个节点里。 当你的集群规模扩大或者缩小时, Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。
5.3 节点角色
Master-eligible Node 和 Master Node
Date Node 和 Coordinating Node
(暂时理解的还不清楚,得自己搭建一遍才能清楚)
6.参考文献
1、中文官方文档
Elasticsearch: 权威指南 | Elastic
7.学习疑惑
Q:买的产品中ELK的使用场景具体是什么样子的?
A:需要在以后的实践过程中慢慢回答
