ElasticSearch:选择性查询

时间:2012-12-10 08:40:31

标签: elasticsearch

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

示例:

{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的混合)

谢谢, 卡兰

1 个答案:

答案 0 :(得分:1)

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

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