昨天学习了 Elasticsearch 是什么,没看过的可以阅读昨天的文章。
了解了什么是 ES 之后,今天继续 ES 的核心概念。
1.索引 index
文档存储的地方,类似于 MySQL 的数据库。
2.字段 field
相当于数据表中的字段,在 ES 中可以理解为 JSON 数据的键。
{
"name":"wind"
}
3.映射 mapping
映射是对文档中每个字段的类型进行定义。在大多数使用场景中,我们并不需要显示的创建映射,因为 ES 中实现了动态映射。
ES 支持的类型如下:
类型 | 解释 |
---|---|
long | 有符号 64 位整数 |
integer | 有符号 32 位整数 |
short | 有符号 16 位整数 |
byte | 有符号 8 位整数 |
double | 双精度 64 位 IEEE 754 浮点数 |
float | 单精度 32 位 IEEE 754 浮点数 |
half_float | 半精度 16 位 IEEE 754 浮点数 |
scaled_float | 支持固定的缩放因子的浮点数 |
text | 需要分词设置 text 类型 比如内容、描述 |
keyword | 不需要分词设置 keyword 类型 比如 email 地址、主机名、状态码、标签 |
string | 5.x 已废弃 |
我们在索引中写入一个下面的 JSON 文档,在动态映射的作用下,name
会映射成 text
类型, age
会映射成 long
类型。
{
"name":"wind",
"age":18
}
4.文档 document
相当于数据库中行的概念。在 MySQL中插入一行数据和 ES 中插入一个 JSON 文档是一个意思。
一个文档不只有数据。它还包含了元数据(metadata),即关于文档的信息。三个必须的元数据节点是:
- _index:文档存储的地方;
- _type:文档代表的对象的类;
- _id:文档的唯一标识。
5.类型 type
如果按照关系型数据库中的对应关系,还应该有表的概念。ES中没有表的概念,,在我们建立索引之后,可以直接往索引中写入文档。ES中有 Type 的概念,可以理解成关系型数据库中的表,在 6.0 版本之后Type就被废弃了。