使用轮胎/退休宝石在ElasticSearch中丢失文档

时间:2014-07-16 09:06:20

标签: ruby-on-rails elasticsearch tire

我遇到使用轮胎宝石从ElasticSearch索引中丢失项目的问题。

tire/retire 0.6.2, 
ElasticSearch 0.90.13 (3 nodes)

情况: 我们有一个postgres数据库的项目,也在ES索引。 物品定期进入我们的PG数据库,每5分钟就会生成一个未编制索引的大量商品(我们有一个索引标志) - 通常约有50-100个商品。 所有项目都在批量请求中(轮胎bulk_store),ES中没有任何项目的错误(批量商店通过确定)。

问题: 文档数与PG数据库中的项目数不匹配。还有一些项目丢失(我不知道索引中缺少哪些项目)。 这种差异正在逐渐增加。

    ES中的
  • id是PG中的唯一ID,不应该有相同ID的文档
  • ES日志中没有什么奇怪的东西
  • 所有商品都会发送到批量商店
  • 我们正在检查批量响应中的错误,找不到
  • 使用轮胎佣金任务强制重新索引(tire:import:model CLASS="Item" FORCE=1)成功索引所有项目,以便文档计数匹配pg计数。没有FORCE的重新索引不会改善文档计数。

任何想法为什么会发生这种情况?

我们计划从tire-> elasticsearch gems和ES升级到1.x,但在此之前我需要知道为什么会发生这种情况以防止将来发生这种情况。

示例:

Items in pg DB: 1399669

"docs": {
        "count": 1399190,
       "deleted": 2766
      }

0 个答案:

没有答案