Elasticsearch是一个基于Apache Lucene的搜索服务器.它由Shay Banon开发并于2010年出版.它现在由Elasticsearch BV维护.它的最新版本是2.1.0.
Elasticsearch是一个实时分布式和开源的全文搜索和分析引擎.它可以从RESTful Web服务接口访问,并使用架构较少的JSON(JavaScript Object Notation)文档来存储数据.它基于Java编程语言构建,使Elasticsearch能够在不同的平台上运行.它使用户能够以非常高的速度探索大量数据.
Elasticsearch的一般功能如下: ;
Elasticsearch可扩展到数PB的结构化和非结构化数据.
Elasticsearch可用作MongoDB和RavenDB等文档存储的替代.
Elasticsearch使用非规范化来提高搜索性能.
Elasticsearch是一种流行的企业搜索引擎,目前被许多大型组织使用,如维基百科,卫报,StackOverflow,GitHub等.
Elasticsearch是开源的,可在Apache许可版本2.0下使用.
Elasticsearch的关键概念如下 :
Node : 它指的是Elasticsearch的单个运行实例.单个物理和虚拟服务器可以容纳多个节点,具体取决于其物理资源的功能,如RAM,存储和处理能力.
群集 : 去;它是一个或多个节点的集合.群集为所有节点提供整体数据的集体索引和搜索功能.
索引 : 它是不同类型的文档和文档属性的集合.索引还使用分片的概念来提高性能.例如,一组文档包含社交网络应用程序的数据.
类型/映射 : 它是共享同一索引中存在的一组公共字段的文档集合.例如,索引包含社交网络应用程序的数据,然后可以有用户配置文件数据的特定类型,另一种用于消息传递数据的类型和另一种用于评论数据的类型.
文件 : 它是以JSON格式定义的特定方式的字段集合.每个文档都属于一个类型并驻留在索引中.每个文档都与一个唯一的标识符相关联,称为UID.
Shard : 索引水平细分为分片.这意味着每个分片都包含文档的所有属性,但包含的索引数量少于JSON对象.水平分隔使得shard成为一个独立的节点,可以存储在任何节点中.主分片是索引的原始水平部分,然后这些主分片被复制到副本分片中.
副本 : Elasticsearch允许用户创建其索引和分片的副本.复制不仅有助于在发生故障时提高数据的可用性,还可以通过在这些副本中执行并行搜索操作来提高搜索性能.
Elasticsearch是在Java上开发的,几乎在每个平台上都能兼容.
Elasticsearch是实时的,换句话说,在一秒钟之后,可以在此引擎中搜索添加的文档.
Elasticsearch是分布式的,这使得它可以轻松扩展和集成到任何大型组织中.
通过使用网关的概念,可以轻松创建完整备份.存在于Elasticsearch中.
与Apache Solr相比,Elasticsearch中处理多租户非常容易.
Elasticsearch使用JSON对象作为响应,这使得可以调用具有大量di的Elasticsearch服务器不同的编程语言.
除了那些不支持文本呈现的文档类型外,Elasticsearch几乎支持所有文档类型.
Elasticsearch没有多语言支持处理请求和响应数据(只能在JSON中),与Apache Solr不同,它可以是CSV,XML和JSON格式.
Elasticsearch也有分裂大脑情况的问题,但在极少数情况下.
在Elasticsearch中,index是类型的集合,就像数据库是RDBMS(关系数据库管理系统)中的表的集合一样.每个表都是行的集合,就像每个映射都是JSON对象Elasticsearch的集合一样.
Elasticsearch | RDBMS |
---|---|
指数 | 数据库 |
碎片 | 碎片 |
映射 | 表 |
字段 | 字段 |
JSON对象 | 元组 |