教程 > Elastic Search 阅读:124

Elastic Search

Elasticsearch 是一个实时分布式开源全文搜索和分析引擎。 它用于单页应用程序 (SPA) 项目。 Elasticsearch 是一种用 Java 开发的开源软件,被世界各地的许多大型组织所使用。 它根据 Apache 许可版本 2.0 获得许可。

在本教程中,我们将详细介绍 Elasticsearch 的基础知识及其重要功能。

一般特征

Elasticsearch 的一般特征如下 -

  • Elasticsearch 可扩展至 PB 级结构化和非结构化数据。
  • Elasticsearch 可以用作 MongoDB 和 RavenDB 等文档存储的替代品。
  • Elasticsearch 使用非规范化来提高搜索性能。
  • Elasticsearch 是流行的企业搜索引擎之一,目前被维基百科、卫报、StackOverflow、GitHub 等许多大型组织使用。
  • Elasticsearch 是开源的,在 Apache 许可版本 2.0 下可用。

关键概念

Elasticsearch 的关键概念如下:

Node

它指的是 Elasticsearch 的单个运行实例。单个物理和虚拟服务器可容纳多个节点,具体取决于它们的物理资源(如 RAM、存储和处理能力)的能力。

Cluster 集群

它是一个或多个节点的集合。集群为整个数据提供跨所有节点的集体索引和搜索功能。

Index

它是不同类型文档及其属性的集合。 Index 也使用分片的概念来提高性能。例如,一组文档包含社交网络应用程序的数据。

Document

它是以JSON格式定义的特定方式的字段集合。每个文档都属于一种类型并位于索引中。每个文档都与一个称为 UID 的唯一标识符相关联。

Shard 碎片

索引被水平细分为碎片。这意味着每个分片包含文档的所有属性,但包含的 JSON 对象数量少于索引。水平分离使得分片成为一个独立的节点,可以存储在任何节点中。主分片是索引的原始水平部分,然后将这些主分片复制到副本分片中。

Replicas 副本

Elasticsearch 允许用户创建其索引和分片的副本。复制不仅有助于在发生故障时提高数据的可用性,而且还通过在这些副本中执行并行搜索操作来提高搜索性能。


优点

  • Elasticsearch 是基于 Java 开发的,这使得它几乎可以兼容所有平台。
  • Elasticsearch 是实时的,换句话说,一秒钟后,添加的文档就可以在此引擎中搜索到
  • Elasticsearch 是分布式的,这使得在任何大型组织中都可以轻松扩展和集成。
  • 使用 Elasticsearch 中存在的网关概念可以轻松创建完整备份。
  • 与 Apache Solr 相比,在 Elasticsearch 中处理多租户非常容易。
  • Elasticsearch 使用 JSON 对象作为响应,这使得使用大量不同的编程语言调用 Elasticsearch 服务器成为可能。
  • Elasticsearch 几乎支持所有文档类型,除了那些不支持文本呈现的文档类型。

缺点

  • 与 Apache Solr 不同,Elasticsearch 在处理请求和响应数据(仅可能在 JSON 中)方面没有多语言支持,后者可以 CSV、XML 和 JSON 格式。
  • Elasticsearch 偶尔会出现 Split brain 情况的问题。

Elasticsearch 与 RDBMS 的比较

Elasticsearch 中,索引类似于 RDBMS(Relation Database Management System)中的表。 每个表都是行的集合,就像每个索引都是 Elasticsearch 中的文档集合一样。

下表给出了这些术语之间的直接比较

Elasticsearch RDBMS
Cluster Database
Shard Shard
Index Table
Field Column
Document Row

阅读前需要的知识

在开始学习本教程之前,大家应该对 Java、JSON、搜索引擎和 Web 技术有一个基本的了解。 与 Elasticsearch 的交互是通过 RESTful API; 因此,始终建议大家了解 RESTful API。

如果大家不熟悉这些概念中的任何一个,我们建议各位在开始使用 Elasticsearch 之前借助基于这些主题的教程。

查看笔记

扫码一下
查看教程更方便