基本单元
- Index(索引):索引是一个包含一定类型数据的逻辑容器,类似于关系型数据库中的表。每个索引可以包含多个type,每个type包含了多个document。
- Type(类型):类型是一组具有相似特征的文档的集合,类似于关系型数据库中的表中的“类型”概念。在Elasticsearch 7.x版本中,已经弃用了type这个概念,将type的功能合并到了index中。
- Document(文档):文档是一个JSON格式的数据单元,代表了一个数据实例,也是所有可搜索数据的最小单位,例如一篇文章、一条新闻或一条订单等。文档必须属于一个index,并且可以包含零个或多个field。(相当于关系型数据库中的一条数据)
- Field(字段):字段是文档的属性或数据项,类似于关系型数据库中的列。每个字段都有一 个数据类型,例如文本、数字或日期等。在一个文档中,一个字段可以包含一个值,多个值或者没有值。
关系型数据库 | Elasticsearch |
---|---|
Table | Index(Type) |
Row | Document |
Column | Filed |
Schema | Mapping |
SQL | DSL |
DSL:表定义
文档字段类型
字符串、数值、布尔、日期、二进制、范围类型
类型 | 描述 |
---|---|
Text | 文本,用于存储文本数据,支持全文搜索和部分匹配搜索。 |
keyword | 关键词,用于存储关键词数据,通常用于精确匹配和聚合操作。 |
Numberic | 数值,用于存储数值数据,包括整数、浮点数等,支持范围查询和数值聚合操作。 |
Date | 日期,用于存储日期和时间数据,支持日期范围查询和日期聚合操作。 |
Boolean | 布尔,用于存储布尔值,支持精确匹配和过滤操作。 |
Object | 对象,用于存储嵌套的复杂对象,可以包含多个子字段。 |
Nested | 嵌套,用于存储嵌套的文档,支持独立查询和嵌套查询。 |
GeoPoint | 地理点,用于存储地址位置坐标,支持地理查询和距离计算。 |
文档的id
每个文档都有一个Unique ID
- 可以指定id
- Elasticsearch自动生成
元数据
元数据用于标注文档的相关信息。
- _index:文档所属的索引名
- _type:文档所属的类型名
- _id:文档唯一ID
- _source:文档的原始JSON数据
- _all:整合所有字段内容到该字段,已被废除
- _version:文档的版本信息()解决文档冲突的问题
- _score:相关性打分
_index索引
索引是文档的容器,是一类文档的结合。概念类似于Java中的类,那么与之对应MySQL的表。
- index体现了逻辑空间的概念:每个索引都有自己的Mapping定义,用于定义包含的文档的字段名字和字段类型。
- shard体现了物理空间的概念:索引中的数据分散在Shard上。
- 索引的Mapping定义文档字段的类型
- Setting定义不同的数据分布(使用多少分片、数据如何分布)
不同上下文、词性解释
- 名词:一个Elasticsearch集群中,可以创建很多个不同的索引。
- 动词:保存一个文档到Elasticsearch的过程也叫索引(indexing)。
- 名词:一个B树索引,一个倒排索引。