前言
本文主要介绍 Elasticsearch 的几个基本概念,包括
- Index: 索引
- Type: 分类
- Document: 文档
- Node: 节点
- Shard: 分片
文档
文档特点
- Elasticsearch 是面向文档的,文档是 Elasticsearch 中可以搜索数据的最小单位,以下都可以是一个文档:
- 日志文件中的日志项
- 一篇博客的具体内容
- 一部电影的具体信息
- 一件商品的具体信息
- 文档会被序列化为 JSON 格式后,保存到 ES 中去。
- 每个文档会有一个 ID ,这个 ID 可以在创建文档的时候自己指定,也可以通过 ES 自动创建。
- 一篇文档包含了一系统的字段,类似于数据库的一条记录。
由于文档最后都会序列化成 JSON 串,所以我们可以不需要事先定义好格式,可以随意的扩展字段和格式。并且支持数据嵌套,灵活性强。而关系型数据库的表需要先定义格式并且修改字段复杂,这也是与关系型数据库的中表记录的区别。
同时,字段的类型可以通过自定义,也可以通过 ES 自动推算而来。
下面是一条文档记录的内容:
{
"genre" : [
"Adventure",
"Animation",
"Children",
"Comedy",
"Fantasy"
],
"year" : 1995,
"@version" : "1",
"id" : "1",
"title" : "Toy Story"
}
可以看出,其中包含了多种数据类型。
文档元数据
我们利用 kibana 查询一篇文档,返回的数据如下:
{
"_index" : "movies",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"genre" : [
"Adventure",
"Animation",
"Children",
"Comedy",
"Fantasy"
],
"year" : 1995,
"@version" : "1",
"id" : "1",
"title" : "Toy Story"
}
}
文档元数据是用于标记文档的基本信息。
- _index: 文档所属的索引
- _type: 文档的类型
- _id: 文档的唯一编号
- _version: 文档的版本
- _seq_no: 序列号
- _primary_term: 分片
- _source: 文档的原始内容