Elasticsearch - 基本概念

Elasticsearch是一个基于Apache Lucene的搜索服务器.它由Shay Banon开发并于2010年出版.它现在由Elasticsearch BV维护.它的最新版本是2.1.0.

Elasticsearch是一个实时分布式和开源的全文搜索和分析引擎.它可以从RESTful Web服务接口访问,并使用架构较少的JSON(JavaScript Object Notation)文档来存储数据.它基于Java编程语言构建,使Elasticsearch能够在不同的平台上运行.它使用户能够以非常高的速度探索大量数据.

Elasticsearch  - 一般功能

Elasticsearch的一般功能如下: ;

  • Elasticsearch可扩展到数PB的结构化和非结构化数据.

  • Elasticsearch可用作MongoDB和RavenDB等文档存储的替代.

  • Elasticsearch使用非规范化来提高搜索性能.

  • Elasticsearch是一种流行的企业搜索引擎,目前被许多大型组织使用,如维基百科,卫报,StackOverflow,GitHub等.

  • Elasticsearch是开源的,可在Apache许可版本2.0下使用.

Elasticsearch  - 关键概念

Elasticsearch的关键概念如下 :

  • Node : 它指的是Elasticsearch的单个运行实例.单个物理和虚拟服务器可以容纳多个节点,具体取决于其物理资源的功能,如RAM,存储和处理能力.

  • 群集  : 去;它是一个或多个节点的集合.群集为所有节点提供整体数据的集体索引和搜索功能.

  • 索引 : 它是不同类型的文档和文档属性的集合.索引还使用分片的概念来提高性能.例如,一组文档包含社交网络应用程序的数据.

  • 类型/映射 : 它是共享同一索引中存在的一组公共字段的文档集合.例如,索引包含社交网络应用程序的数据,然后可以有用户配置文件数据的特定类型,另一种用于消息传递数据的类型和另一种用于评论数据的类型.

  • 文件 : 它是以JSON格式定义的特定方式的字段集合.每个文档都属于一个类型并驻留在索引中.每个文档都与一个唯一的标识符相关联,称为UID.

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

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

Elasticsearch  - 优势

  • Elasticsearch是在Java上开发的,几乎在每个平台上都能兼容.

  • Elasticsearch是实时的,换句话说,在一秒钟之后,可以在此引擎中搜索添加的文档.

  • Elasticsearch是分布式的,这使得它可以轻松扩展和集成到任何大型组织中.

  • 通过使用网关的概念,可以轻松创建完整备份.存在于Elasticsearch中.

  • 与Apache Solr相比,Elasticsearch中处理多租户非常容易.

  • Elasticsearch使用JSON对象作为响应,这使得可以调用具有大量di的Elasticsearch服务器不同的编程语言.

  • 除了那些不支持文本呈现的文档类型外,Elasticsearch几乎支持所有文档类型.

Elasticsearch  - 缺点

  • Elasticsearch没有多语言支持处理请求和响应数据(只能在JSON中),与Apache Solr不同,它可以是CSV,XML和JSON格式.

  • Elasticsearch也有分裂大脑情况的问题,但在极少数情况下.

Elasticsearch和RDBMS之间的比较

在Elasticsearch中,index是类型的集合,就像数据库是RDBMS(关系数据库管理系统)中的表的集合一样.每个表都是行的集合,就像每个映射都是JSON对象Elasticsearch的集合一样.

ElasticsearchRDBMS
指数数据库
碎片碎片
映射
字段字段
JSON对象元组