[Solr]更新の際に _route_ パラメータは指定しない方が良い

今回は小ネタです。

SolrCloud でとある検証をしているときに不思議な現象に気付きました。

ドキュメント1を追加
→ 全件検索でドキュメント1がヒットする
→ ドキュメント2を追加
→ 全件検索でドキュメント2だけがヒットする
→ ドキュメント3を追加
→ 全件検索でドキュメント3だけがヒットする
→ …

要するに、新しいドキュメントを追加するとそれ以前のドキュメントが消えるという現象です。

いろいろ試すうちに、あるスクリプトを使って更新した場合にこの現象が発生し、別のスクリプトでは発生しないことが分かりました。2つのスクリプトを比較することで、問題が起こる方では update の際に _route_ パラメータを指定していることが分かりました。

コレクションを CREATE するときに _route_ パラメータを指定していれば update のときに _route_ を指定する必要はありませんが、どのフィールド値でルーティングしているのかが分かりやすいように明示的に _route_ を書いたのが仇となったようです。

ログを見ても _route_ パラメータ有りの場合と無しの場合とで目立った違いは無く、どうしてこうなるのかを調べるにはソースを深く追っかけてみるしかなさそうです。

Related Post