文档的版本号
在es中每个文档都有一个版本号,默认情况下,版本号都是随着每次对该文档的修改或者删除自增的。在某些文档会在固定时间间隔被更新,且本身会记录时间的情况下,则可以用过版本号这一信息推断出该文档的第一次插入时间。首次插入时间即为当前文档记录的时间减去其更新次数与固定时间间隔的乘积。
版本号更新机制
首次插入数据时,版本号为1.
每次更新数据时,版本号都会+1。
例如:
PUT test1/_doc/1
{
“name”: “bbbb”
}
查询该条数据,将返回如下结果:
“_version”: 1
“_source” : {
“name” : “bbbb”
}
再次执行put操作,更新该条数据
PUT test1/_doc/1
{
“name”: “bbbb”,
“age”: 33
}
此时再次查询该条数据,33岁的年龄已经被加入其中,且版本号+1
“_version”: 2
“_source” : {
“name” : “bbbb”,
“age” : 33
}
再次执行put操作,更新该条数据
PUT test1/_doc/1
{
“name”: “bbbb”
}
此时再次查询该条数据,33岁的年龄已经被去除,且版本号再次+1
“_version”: 3
“_source” : {
“name” : “bbbb”
}
如何查询版本号
http://ip:端口/索引名/_type/文档id/
查询结果:
“_index”: 索引名,
“_type”: type,
“_id”:文档id,
“_version”: 版本号,
“_source”: { 详细数据内容}
"_version"后跟随的即为版本号。
此时即可根据文档中记录的时间与版本号进行倒退,得出其首次插入ES的时间。