我们可以使用elasticsearch版本检索以前的_source文档吗

我已经阅读了有关ES的关于版本管理的博客文章。

但是,我希望能够从更新中获取以前的“ _souce”文档。

例如,假设我有这个对象:

{

"name": "John",

"age": 32,

"job": "janitorial technician"

}

// this becomes version 1

我将其更新为:

{

"name": "John",

"age": 32,

"job": "president"

}

// this becomes version 2

然后,通过ES中的版本控制,我能否获得对象的先前的“ job”属性?我已经试过了:

curl -XGET "localhost:9200/index/type/id?version=1"

但这只会返回最新的_source对象(John担任总裁的对象)。

我实际上想实现版本差异方面,就像StackOverflow一样。(顺便说一句,我正在使用elasticsearch作为我的主要数据库-

如果有一种方法可以与其他nosql数据库一起使用,我将很乐意尝试一下。最好是与ES集成良好的数据库。)

回答:

不,您不能使用内置版本控制来执行此操作。所有要做的就是存储当前版本号,以防止您无序应用更新。

如果要保留多个版本可用,则必须自己实现。根据您可能要存储的版本数,可以采用以下三种方法:

1)将旧版本存储在同一文档中

{ text: "foo bar",

date: "2011-11-01",

previous: [

{ date: '2011-10-01', content: { text: 'Foo Bar' }},

{ date: '2011-09-01', content: { text: 'Foo-bar!' }},

]

}

2)添加一个current标志:

{

doc_id: 123,

version: 3,

text: "foo bar",

date: "2011-11-01",

current: true

}

{

doc_id: 123,

version: 2,

text: "Foo Bar",

date: "2011-10-01",

current: false

}

3)与上面的(2)相同,但是将旧版本存储在单独的索引中,因此保留您的“实时”索引,该索引将用于大多数查询(较小且性能更高)。

以上是 我们可以使用elasticsearch版本检索以前的_source文档吗 的全部内容, 来源链接: utcz.com/qa/401866.html

回到顶部