Elasticsearch概述

2020-01-16  本文已影响0人  大大护法

es对全类型的数据提供实时搜索和分析

数据流入-文档与索引

es是一个分布式json格式文档存储,一个文档从存储到被索引到可搜索所需的时间在一秒内,近乎实时。es通过反序索引来支持全文检索,反序索引列出所以特殊单词及与之相关的文档。

一个索引包含多个文档,一个文档包含多个键值对字段,es索引不同类型字段中的数据并且通过每个类型字段对应专用数据结构使得搜索加快:比如文本字段对应反序索引(inverted indices),数字和地理字段使用BKDtrees.

es不需要指明文档中不同类型字段的处理方式,es可以自动发现并匹配不同类型字段对应的数据结构。

也可以通过指定类型映射从而处理来实现一些别的功能。

全文本字段被检索之前会经历一段分析链。

信息流出-检索与分析

es在Lucene的基础上提供了一套简单有逻辑的REST API,提供了多种语言的Client。

检索

es支持结构化查询(类似sql),全文查询,以及结合二者的复杂查询。es可以通过Query DSL搜索也可以构建SQL-风格查询。

分析

es支持聚合运算,不仅可以大海捞针,还可以计算大海里有多少根针,平均长度,上个月新增了多少数量,甚至知道这里有没有不同寻常,有问题的针。因为聚合也用了索引,所以速度很快,快到可以在黑板上实时显示聚合数据的变化。聚合和搜索请求可以同时发生,比如搜索所有带有某一特征的60厘米的针。

扩展与弹性

es集群由server(node)组成每个node包含多个分片(shard),集群自动将数据和查询负载分配到可用的节点(node),节点越多ES集群越强。

分片

ES的索引实际上是一个包含一个或多个物理分片的逻辑组,分片又有主分片和备份分片的区别,主分片的数量在索引创建时固定,副分片的数量可以随时无影响的变化。通过将文档分布在索引的多个节点的多个分片上,实现了数据沉余以抵抗硬件的故障同时增加查询性能。集群增加或缩小时会自动平衡各个节点的分片。

性能优化

对于一个索引来说主分片的数量和分片大小,如果数量太多就会增加维护成本,大小太大重新分配的移动时间就长。对于查询来说,大小小查询速度快,但是可能分片数量太多,总耗费时间长。

参考- https://www.elastic.co/guide/en/elasticsearch/reference/current/scalability.html

容灾

重新分配分片时如果各个节点不在同一个网络可能会有很大的网络开销,所有为了两地部署,ES提供了跨集群备份(CCR),

CCR提供了一个自动被主集群同步的第二远端集群作为一个热备。同时第二集群可就近服务较近地区的查询服务。

es官网文档连接-https://www.elastic.co/guide/index.html

上一篇下一篇

猜你喜欢

热点阅读