1. elatsticsearch(简写为es)是什么
它是一个实时的分布式、开源的全文本查询和分析引擎,基于java语言开发。
2. es可以做什么
它可以在SPA(single page application-单页应用)中被使用,为用户提供高速的数据查询和分析。且原生支持java应用。
3. 主要特性
它有如下几个主要特性:
- 可拓展性强,支持高达千兆字节(GB)的数据(不管是结构性的还是非结构性的);
- 可以作为类似MongoDB和RavenDB等文档存储数据库的替代品;
- 使用非规范化来提高搜索性能;
- 企业级的搜索引擎,被大型公司广泛使用;
- 开源工具,且使用Apache许可证。
4. 关键性的概念
- 节点:表示单个运行的es实例,es可以在单台服务器上运行多个实例,这完全取决于服务器的物理内存和处理器能力;
- 集群:一个或者多个节点的集合,在逻辑上提供了集中的数据索引和查询能力,通常表现在横跨多个节点获取完整数据的能力。
- 索引:不同类型的文档和他们的属性的集合。在关系型数据库中,索引一般用于提升查询性能。
- 文档:一个使用JSON格式定义的字段集合,而这些字段定义了数据查询的规则。每个文档都属于一种类型并驻留在索引中,每个文档都与一个称为 UID 的唯一标识符相关联。
- 分片:索引被横向拆分成不同的分片,这意味着每个分片包含了所有的文档属性,但包含的 JSON 对象数量少于索引。水平分离使分片成为一个独立的节点,且可以存储在任何节点,主分片是索引的原始水平部分,然后将这些主分片复制到副本分片中。
- 副本:es允许用户创建索引和分片的副本。复制不仅有助于在发生故障时提高数据的可用性,而且通过在这些副本中执行并行搜索操作来提高搜索性能。
5. es的优势
- es 是基于 Java 开发的,这使得它几乎可以兼容所有平台;
- es 是实时的,也就是说一秒后添加的文档就可以在这个引擎中搜索了;
- es 是分布式的,这使得它可以轻松地在任何大型组织中扩展和集成。
- 使用 es 中的网关概念可以轻松创建完整备份。
- 与 Apache Solr 相比,在 es 中处理多租户非常容易。
- es 使用 JSON 对象作为响应,这使得使用大量不同的编程语言调用 es 服务器成为可能。
- es 支持几乎所有文档类型,除了那些不支持文本渲染的文档类型。
6. es的缺点
- 与 Apache Solr 不同,es 在处理请求和响应数据方面没有多语言支持(仅支持JSON),而Apache Solr 可以支持 CSV、XML 和 JSON 格式。
- 偶尔,es 会出现**脑裂(Split brain)**的问题。(什么是脑裂)
7. es和关系数据库之间的区别
在 es 中,索引类似于 RDBMS(关系数据库管理系统)中的表。 每个表都是行的集合,就像 es 中的每个索引都是文档的集合一样。
下表给出了这些术语之间的直接比较 -
es | RDBMS |
---|---|
集群 | 数据库 |
分片 | 分片 |
索引 | 表 |
字段 | 列 |
文档 | 行 |