一、es中文档的元数据包括:
1、_index:
索引(index)类似于关系型数据库里的数据库(database),事实上,我们的数据被存储和索引在分片(shards)中,索引知识把一个或多个分片分组在一起的逻辑空间,
索引名字必须全部小写,不能以下划线开头,不能包含逗号。
2、_type:
类型(type)类似于关系型数据库中的table,在es中我们用type表示相同的‘事务’,每个类型(type)都有自己的映射(mapping)或者结构定义,就像传统数据库表中的列一样。所有类型下的文档被存储在同一个
索引下,但是类型的映射(mapping)会告诉Elasticsearch不同的文档如何被索引。
_type 的名字可以是大写或小写,不能包含下划线或逗号。
3、_id:
id仅仅是一个字符串,它与_index和_type组合时,就可以在es中唯一标识一个文档,当创建一个文档,你可以自定义 _id ,也可以让Elasticsearch帮你自动生成。
二、如何索引一个文档
1、自定义id
如果你的文档有自然的标识符(例如 user_account 字段或者其他值表示文档),你就可以提供自己的 _id ,使用这种形式
的 index API:
PUT /{index}/{type}/{id} { "field": "value", ... }
响应
{ "_index": "...", "_type": "...", "_id": "...", "_version": 1, "created": true }
响应指出请求的索引已经被成功创建,这个索引中包含 _index 、 _type 和 _id 元数据,以及一个新元素: _version 。
Elasticsearch中每个文档都有版本号,每当文档变化(包括删除)都会使 _version 增加。
2、自增id
如果我们的数据没有自然ID,我们可以让Elasticsearch自动为我们生成。请求结构发生了变化: PUT 方法—— “在这个URL中存
储文档” 变成了 POST 方法—— "在这个文档下存储文档" 。
URL现在只包含 _index 和 _type 两个字段:
POST /{index}/{type}/ { "title": "...", "text": "...", "date": "..." }
响应内容与刚才类似,只有 _id 字段变成了自动生成的值:
{ "_index": "...", "_type": "...", "_id": "wM0OSFhDQXGZAWDf0-drSA", "_version": 1, "created": true }
自动生成的ID有22个字符长,URL-safe, Base64-encoded string universally unique identifiers, 或者叫 UUIDs。
来自 https://blog.csdn.net/qq_40651753/article/details/86006446