0

需要一些帮助。我的文档有一个版本字段。只有更新的文档才会有带有递增版本号的新记录。

例子:

{id:1 , version:1,…} 
{id:1 , version:2,….} //This has been updated
{id:2 , version:1,…} 

在上面的示例中,id=1 有两条记录,因为它已被更新。虽然 id=2 有一条记录,因为它尚未更新并且仍在版本 1 上。

现在在弹性搜索中是否有任何查询可以获得最大版本。示例:获取唯一文档 TILL 版本 1 应该给出结果:

{id:1 , version:1,…}
{id:2 , version:1,…}

在第 2 版之前获取唯一文档时应该给出:

{id:1 , version:2,….}
{id:2 , version:1,…}

(在上面的结果中有版本 1 和版本 2 的混合)

谢谢, 卡兰

4

1 回答 1

1

在 elasticsearch 中没有简单的方法来实现这一点(至少在实现像Field Collapsing/Combining之类的东西之前)。我建议维护两个索引:一个用于具有自动生成的 id 的所有版本,另一个索引仅具有最新版本,记录的id字段作为 id。当你需要所有版本时,你可以搜索第一个索引,当你只需要最新版本时,你可以搜索第二个。

另一种解决方案是以某种方式指示一条记录代表最新版本。可以通过添加一个布尔字段“latest”来完成,这意味着当添加新记录时,您必须使用以前的最新版本重新索引记录,或者您可以添加一个子文档来跟踪每条记录的最新版本.

于 2012-12-10T11:43:25.497 回答