如何在elasticsearch中只存储有限数量的doc。

时间:2018-03-19 08:41:20

标签: elasticsearch go elasticsearch-5

我需要在特定索引下只存储10个数字文档。并且第11项应该替换旧项目,即第1项。这样我任何时候都只有10个文档。 我在golang中使用elacticsearch

2 个答案:

答案 0 :(得分:1)

如果您只想存储10个doc     你应该申请algo =(文件号%10)+1。     返回值是您的elasticsearch _id字段     algo retyrn只有1到10.并且总是将其编入索引。

答案 1 :(得分:-1)

我假设您将拥有文件的固定名称,例如1,2,...,10或其他。因此,一种方法可以是使用Redis实现循环列表https://redis.io/commands/rpoplpush#pattern-circular-list(您也可以实现自己的算法,通过代码实现循环列表)

所以基本上你应该按照下面的步骤进行操作:

  • 您加载循环列表中排序的10个值,例如1,2,3,... 10
  • 如果要在Redis中存储文档,则从列表中提取元素,对于我们的列表,该元素将为1
  • 对您的ElasticSearch索引进行查询计数,以获取索引中的文档编号
  • 如果你得到一个计数< 10您可以使用您的数据调用插入文档查询,并使用从列表中提取的编号作为文档名称。如果count = 10,则在ElasticSearch上调用更新文档查询

    通告将以这种方式取得进展:

  • 列表的初始状态为[1, 2, ...10]。您提取1并在提取后,它会转到列表的末尾:[2,3,..., 10,1]

  • 从列表中进行第二次提取,列表的当前状态:[2, 3, ...10, 1]。您提取2并在解压缩后,它会转到列表的末尾:[3,4,..., 1,2]