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 であると確信していますが、4 つの英数字 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 にアクティブレコードがないようですが、elasticsearch インデックスには同じドキュメントが含まれています。

データの再インデックスを試すことができます。再インデックスが常に解決策であるとは限りません。

最善の解決策は、ドキュメントが 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 に答える