Elasticsearch 是啥?
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储数据,帮助发现意料之中以及意料之外的情况。
Elasticsearch 的特性
- 快速获得结果:
- 如果您能够立即获得答案,您与数据的关系就会发生变化。这样您就有条件进行迭代并涵盖更大的范围。
- 强大的设计:
- 但是要达到这样的速度并非易事。我们通过有限状态转换器实现了用于全文检索的倒排索引,实现了用于存储数值数据和地理位置数据的 BKD 树,以及用于分析的列存储。
- 无所不包:
- 而且由于每个数据都被编入了索引,因此您再也不用因为某些数据没有索引而烦心。您可以用快到令人惊叹的速度使用和访问您的所有数据。
Elasticsearch 的缺点
- Elasticsearch 可能会出现裂脑情况的问题;
- 与 Apache Solr 不同,Elasticsearch 不支持处理请求和响应数据的多语言;
- 与 MongoDB、Hadoop 等其他选项相比,Elasticsearch 不是一个好的数据存储。它在小型用例中表现良好,但在每天传输 TB 数据的情况下,它要么阻塞要么丢失数据;
ElasticSearch 与 Solr 的对比
- Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
- Solr 支持更多格式的数据,而 Elasticsearch 仅支持 Json 文件格式;
- Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
- Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch;
使用场景
- 存储和分析由不同系统生成的日志的工具;
- 采集和组合公共数据;
- 全文搜索;
- 数据分析,指标分析;
关键概念
节点(Node)
节点是 Elasticsearch 的一个实例,用于存储数据。它在 Elasticsearch 实例开始运行时创建。简单来说,它指的是一个正在运行的 Elasticsearch 实例。出于管理目的,节点由其名称标识。
集群
集群是一组一个或多个节点,它们一起工作以保存数据。集群为整个数据提供跨所有节点的搜索功能和联合索引。基本上,它是一组运行 Elasticsearch 引擎的系统。
类似于节点,它也由一个名称标识以用于管理目的。集群的默认名称是 elasticsearch。
文档(Document)
该文档是以独特方式的字段集合,以 JSON 格式定义。它用于存储驻留在 Elasticsearch 索引中的数据。所以,它可以被索引。每个文档都属于一种类型并与唯一标识符(UID) 相关联。它以 JSON(键: 值)对表示。在 RDBMS 中,文档表示为表中的一行。
索引(Index)
索引是一组不同类型的文档。它有助于执行搜索、更新和删除操作以及索引。在关系数据库中,索引表示为表,这意味着索引类似于 RDBMS 中的表。
Elasticsearch 允许在单个集群中定义各种索引。为了提高性能,索引使用了分片的概念。
分片(Shard)
使用集群可以存储大量数据,但可能会超出单个服务器的容量。为了克服这个问题,Elasticsearch 允许将您的索引分成几个部分,称为 shard。因此,将您的索引分成几部分以创建分片。您可以在创建索引时定义所需的分片数量。
创建索引时,可以定义所需的分片数量。每个分片都是独立的且功能齐全。
副本
副本是分片的附加副本。它们像分片一样执行查询。 Elasticsearch 使用户能够创建其索引和分片的副本。
Elasticsearch 提供副本以避免任何类型的故障,并有助于在出现故障时提高数据的可用性。故障可能类似于-节点或分片由于某种原因将脱机。复制不仅增加了数据的可用性,还通过在这些副本中执行并行搜索操作来提高搜索的性能。
映射(Mapping)
在 Elasticsearch 中,每个索引都有一个与之关联的映射,这是索引中每个单独文档可以保存的数据的模式定义。映射可以自动完成,也可以为索引手动创建。数据推送到索引时,会自动添加映射。
ES 和 RDBMS 的比较
RDBMS(关系数据库管理系统) | Elasticsearch |
---|---|
Table 表格 | Index 索引 |
Row 行 | Document 文档 |
Column 列 | Field 字段 |
Schema 表 | Mapping 映射 |
SQL | DSL |
ElasticSearch 生态
Kibana
Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。查看完整的 Kibana 功能列表。
- 一张图片胜过千万行日志;
- 简单直观地构建可视化;
- 通过 Kibana 中的 Canvas,发挥无限创意;
- 仪表板助您获得深入洞见并采取行动;
- 构建告警以触发定制行动;
Logstash
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
- 输入、过滤器和输出;
- 采集各种样式、大小和来源的数据;
- 实时解析和转换数据;
- 选择您的存储库,导出您的数据;
安装与使用
安装
使用
-
Elasticsearch 官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
-
Elasticsearch 下载中心:https://elasticsearch.cn/download/