0

我正在使用 Tire 和 ElasticSearch 来检索一堆用户load: true,并且我看到了奇怪的 ID 参数。我收到的错误是:

Couldn't find all Users with IDs (mhNpuOspSQeUWpHExeVEPA, iSum7MecRw2FKbbFD8NSYg, vl3VMWESQiuECI56fBY-TQ, y0Wy3aOtQR26zQle8_K9Sw, 56625, 479165, 479169, 62911, 479181, 479173) (found 6 results, but was looking for 10)

我确定找到的 6 个结果是整数 ID,但是四个字母数字 ID 是什么,我应该如何最好地处理它们?希望这是显而易见的,但我还没有找到任何可以解释这一点的东西。

编辑

to_indexed_json 的示例内容:

{"email"=>"lucy@example.com", "forename"=>"Lucy", "id"=>5070, "surname"=>"Test", "username"=>"", "is_deleted"=>false}
4

1 回答 1

0

发生这种情况是因为,您正在使用 load => true 选项从数据库加载搜索结果。数据库中似乎缺少活动记录,但弹性搜索索引包含相同的文档。

您可以尝试重新索引数据。恕我直言,重新索引并不总是解决方案。

最好的解决方案是在 db 中删除文档时将其删除。您可以为此使用 after_destroy 回调。

Tire remove api 用于从索引中删除单个文档。

Tire.index('my-index-name').remove('my-document-type', 'my-document-id')

参考:https ://github.com/karmi/tire/issues/43

于 2013-09-06T11:17:48.593 回答