写在前面
本文一起看下es的基础概念,比较枯燥的内容说,但不看又不行。开始。
1:document
文档,是es搜索存储数据的最小单元,相当于是MySQL的一行记录,但es中是一个json,如下是一个通过logstash转换csv生成的一个文档:
一个文档除了存储具体的数据之外还会存储一些元数据
,包括如下:
_id:es自动生成的unique id
_type:文档所属的类型名称,固定为_doc
_index:文档所属的索引名(索引可以理解为MySQL的表)
_source:存储文档的原始数据
_version:文档的版本信息
-score:文档的评分,跟着查询走的
2:索引
注意这里是名词index,而非动词indexing,索引是文档的容器,是一个逻辑概念,在索引中可以定义setting
信息和mapping
信息,其中setting信息用来设置分片,副本等信息,mapping用来设置文档的字段类型等信息,类似于MySQL的建表语句,如下:
3:type
6.0之前可以设置多个,是index下对document的进一步分组,在6.0已经废弃,但还可以设置,在7.0就默认只有一个_doc,不能设置了。
4:node
一个es实例就是一个node,node分为master-eligible node和master node,其中前者是非master node,后者是master node。从数据处理的角度分为data node,coordinating node,其中data node负责处理数据,coordinate node接收请求但不查询数据只负责代理查询以及汇总数据,另外,data node也是cordinate node。还有ingest节点,负责处理数据,如写入数据时处理后再写入。
5:分片
分片用来存储数据的逻辑单元,分为主分片和副本分片,主分片是直接写入数据的分片,副本分片是备份数据的分片,如下图:
分片分布在node上,如下在cerebro 查看:
6:rest api
可查看数据以及集群状态。
- 查看集群状态
在cerebro查看:
- 查看集群节点
- 查看分片
详细的api参考这里 。
7:和关系型数据库对比
写在后面
参考文章列表
Elasticsearch是如何做到快速索引的 。