SQL 和 Elasticsearch 概念映射

编辑

SQL 和 Elasticsearch 概念映射

编辑

虽然 SQL 和 Elasticsearch 使用不同的术语来描述数据组织方式(以及不同的语义),但本质上它们的目的是相同的。

所以让我们从最基础的部分开始;大致如下:

SQL Elasticsearch 描述

字段

在这两种情况下,在最低级别,数据都存储在命名的条目中,这些条目具有各种数据类型,并包含一个值。SQL 将此类条目称为,而 Elasticsearch 称为字段。请注意,在 Elasticsearch 中,一个字段可以包含多个相同类型的值(本质上是一个列表),而在 SQL 中,一个只能包含该类型一个值。Elasticsearch SQL 会尽最大努力保留 SQL 语义,并根据查询拒绝那些返回多个值的字段的查询。

文档

字段并不独立存在;它们是文档的一部分。两者具有略微不同的语义:倾向于严格(并且有更多强制要求),而文档则倾向于更加灵活或宽松(同时仍然具有结构)。

索引

SQL 或 Elasticsearch 查询执行的目标。

模式

隐式

在 RDBMS 中,模式主要是表的命名空间,通常用作安全边界。Elasticsearch 没有提供等效的概念。但是,当启用安全功能时,Elasticsearch 会自动应用安全实施,以便角色只能看到其被允许查看的数据(在 SQL 行话中,是其模式)。

目录数据库

集群实例

在 SQL 中,目录数据库可以互换使用,表示一组模式,即多个表。在 Elasticsearch 中,可用的索引集被分组到一个集群中。语义也略有不同;数据库本质上是另一个命名空间(可能会对数据存储方式产生一些影响),而 Elasticsearch 集群是一个运行时实例,或者更确切地说是一组至少一个 Elasticsearch 实例(通常分布式运行)。在实践中,这意味着虽然在 SQL 中可以在一个实例中拥有多个目录,但在 Elasticsearch 中只能拥有一个

集群

集群(联合)

传统上,在 SQL 中,集群指的是包含多个目录数据库(见上文)的单个 RDBMS 实例。相同的词也可以在 Elasticsearch 中重复使用,但其语义有所澄清。

虽然 RDBMS 倾向于只有一个运行实例,在一个单机上(不是分布式的),但 Elasticsearch 则反其道而行之,默认情况下是分布式和多实例的。

此外,Elasticsearch 集群可以以联合方式连接到其他集群,因此集群指的是

单个集群:: 多个 Elasticsearch 实例,通常分布在多台机器上,在同一个命名空间内运行。多个集群:: 多个集群,每个集群都有自己的命名空间,并以联合方式相互连接(请参阅跨集群搜索)。

可以看出,虽然概念之间的映射并非完全一一对应,语义也略有不同,但共同点比差异更多。事实上,由于 SQL 的声明性,许多概念可以透明地跨越 Elasticsearch,并且这两个术语很可能在本文档的其余部分中互换使用。