1. 文档
-
Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位,例如:
- 日志文件中的日志项
- 一部电影的具体信息 / 一张唱片的详细信息
- MP3播放器里的哼一首歌 / 一篇PDF文档中的具体内容
-
文档会被序列化成JSON格式,保存在ElasticSearch中
- JSON对象由字段组成
- 每个字段都有对应的字段类型( 字符串/ 数值 / 布尔 / 日期 / 二进制 / 范围类型 )
-
每个文档都有一个Unique ID
- 你可以自己指定ID
- 或者通过ElasticSearch自动生成
1.1 JSON文档
- 一篇文档包含了一系列的字段,类似关系型数据库中表里的一条记录
- Elasticsearch文档都以JSON形式存在,因为JSON文档,格式灵活,不需要预先定义格式
- 字段的类型可以指定或者通过Elasticsearch自动进行推算
- 支持数组 / 支持嵌套
1.2 元数据
- 元数据用于标注文档的相关信息
字段 | 说明 |
---|---|
_index | 文档所属的索引名 |
_type | 文档所属的类型名 |
_id | 文档唯一ID |
_source | 文档的原始Json数据 |
_id | 文档唯一ID |
_version | 文档的版本信息 |
_score | 相关性打分 |
2. 索引 Index
-
理解ElasticSearch的索引请抛开关系型数据库MySQL等索引的概念,重新认识它。
-
Index - 索引是文档的容器,是一类文档的集合,相当于MySQL的一个Table
- Index体现了逻辑空间的概念,每个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型,相当于MySQL的Schema
- Shard体现了物理空间的概念:索引中的数据分散在Shard上
2.1 索引的Mapping与settings
- Mapping定义文档字段的类型
- setting定义不同的数据分布
2.2 关于索引的不通语义
- 2.2.1 名词:一个ElasticSearch集群中,可以创建很多个不用的索引
- 2.2.2 动词:保存一个文档到ElasticSearch的过程也叫索引(indexing)
- ES中,创建一个倒排索引的过程
- 2.2.3 名词:一个B树索引,一个倒排索引
3. 类型 Type
- 在7.0之前,一个Index可以设置多个Types
- 从6.0开始,Type已经被Deprecated。
- 7.0开始,一个索引只能创建一个Type - “doc”
4. 抽象与类比
- 传统关系型数据库与ES抽象对比图
5. REST API - 方便被各种语言调用
5.1 一些基本的API
- 查看节点
_cat/nodes
查看所有index
_cat/indices