Elasticsearch 文档的核心元数据和文档修改、删除原理解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zx711166/article/details/81984495

文档核心元数据

  1. _index:说明了一个文档存储在哪个索引中,同一个索引下存放的是相似的文档(文档的field多数是相同的,可以由不同的field,但不建议使用),索引名必须是小写的,不能以下划线开头,不能包含括号。
  2. _type:表示文档属于索引中的哪个类型,一个索引下只能有一个type(6.0版本之前可以有多个type),类型名可以是大写也可以是小写的,不能以下划线开头,不能包含括号。
  3. _id:文档的唯一标识,和索引、类型组合在一起唯一标识了一个文档,可以手动指定值,也可以由Elasticsearch来生成这个值。
文档id生成方式

手动指定:通常是把其他系统的已有数据导入到Elasticsearch时,选择手动指定。

PUT /index/type/66

由 Elasticsearch 生成 id 值:Elasticsearch生成的id生成长度为20个字符,使用的是 base64 编码,URL安全,使用的是 GUID 算法,分布式下并发生成 id 值时不会冲突。

POST /index/type
_source 元数据分析

添加文档时 request body 中的内容,默认_source返回的是所有字段的数值。
指定返回的结果中含有哪些字段:

GET /index/type/1?_source=name

详解及用法查看:Elasticsearch Java API 的使用(11)—优化索引创建之mapping设置

文档修改、删除原理解析

改变文档内容原理解析

替换方式

PUT /lib/user/4
{
    "first_name": "Jane",
    "last_name": "Lucy",
    "age": 24,
    "about": "I like to collect rock albums",
    "interests": ["music"]
}

修改方式(partial update)

POST /lib/user/4/_update
{
    "doc": {
        "age": 26
    }
}

删除文档:标记为deleted,随着数据量的增加,Elasticsearch会选择合适的时间删除掉。

PUT和POST更新数据的区别

  1. post方式比put方式网络数据传输的次数要少,从而提高性能。post方式从查询文档到修改文档再到创建新的文档都是在Elasticsearch内部实现的。
  2. post请求链路比put要少,post方式发生并发冲突的可能性降低。
    这里写图片描述
阅读更多

没有更多推荐了,返回首页