ES与MYSQL类似,都是一种数据库,不过不同于MYSQL之类的关系型数据库,也不同于NOSQL这类的数据库,ES是一种单独存在的数据库。
首先,JSON 是一种以人可读的文本表示对象的方法。ES中数据以JSON对象的形式存储在ES文档中。一旦一个文档被存储在 ES 中,它就是可以被集群中的任意节点检索到。
文档从某种意义上来讲,就是一个对象。但是与对象不同的是,一个对象仅仅是类似于 hash 、 hashmap 、字典或者关联数组的 JSON 对象,对象中也可以嵌套其他的对象。 对象可能包含了另外一些对象。在 Elasticsearch 中,术语 文档 有着特定的含义。它是指最顶层或者根对象, 这个根对象被序列化成 JSON 并存储到 Elasticsearch 中,指定了唯一 ID。
一个文档必须有以下三个属性
_index (存放文档的索引
_type (文档表示的对象类别
_id (文档的ID
索引对于文档来说,更类似于命名空间的存在。一个文档位于一个索引内。
这里的_type并不是int,arrary,varchar这种,而更像是一种用于区分文档的标识的存在(就像mysql中的联合索引的感觉)
_id 当不指定id进行创建文档时,id会自动生成,但是生成的并不是自增的数字
,而是基于 Base64 编码且长度为20个字符的 GUID 字符串。
且不使用_id时,要使用POST动作进行生成,而不是PUT
三个属性组合,就可以确定唯一的Elasticsearch 中的一个文档
其中,ES每个文档都有一个版本号。当每次对文档进行修改时(包括删除), _version 的值会递增。
- 新建一个索引文档
PUT /{
index}/{
type}/{
id}