我只需要在特定索引下存储 10 个数字文档。第 11 项应取代旧项,即第 1 项。这样我任何时候都只有 10 个文档。 我在戈朗中使用 elacticsearch
如果您只想存储 10 个文档,那么 您应该应用 ALGO = (文档编号 %10)+1。 返回值是你的 Elasticsearch _id字段 算法只有1到10。并始终为其编制索引。
我假设您将有固定的文档名称,例如 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]
-
等等