データストアのクロールが成功と記録されているのに、文書が検索できないことがあります。JavaScriptスクリプトでroleやvirtual_hostへ文字列・配列を渡した際、文書ID生成前に型の不一致が起きる問題への修正がマージされました。
スクリプトでは検索用のロール値を指定する
Boxの設定例も訂正され、固定ロールのスクリプトは次の形になりました。
role="Rbox-users"
管理画面の「パーミッション」欄や、対応プラグインのdefault_permissionsでは{role}box-usersのような表記を使います。一方、データストアスクリプトのroleは値がそのままインデックスへ入ります。初期の接頭辞はロールがR、グループが2、ユーザーが1です。独自に接頭辞を変更している環境では、その設定に合わせます。
role=['Rbox-users', 'Roperators']
virtual_host=['portal-a', 'portal-b']
上記はスクリプト欄の記述例です。ロールや仮想ホスト自体の登録、検索リクエスト側の設定も必要です。
文字列は1要素として扱う
修正後は、文字列を1要素のリストへ変換し、コレクション・配列・スクリプトエンジンが返すインデックス付きMapを文字列リストへそろえてから文書IDを作ります。roleとvirtual_hostの両方が対象です。新しい有効化スイッチはありません。
"Rbox-users,Roperators"という1本の文字列は、2つへ分割されません。複数指定は配列にします。null要素は除外しますが空文字列は保持し、対応しない型はフィールド名と型を含むDataStoreExceptionとして失敗処理へ渡します。既存のリスト指定は同じIDを維持します。
既存データを自動では直さない
従来はClassCastExceptionがWARNに残り、ジョブ全体の成功表示だけでは文書単位の失敗を見逃す場合がありました。修正の取り込みを確認した環境で、少量のデータから再クロールし、登録件数と実際の利用者による検索を確かめます。
誤ったロールで登録済みの文書や、登録に失敗した文書を修正だけで自動再処理する機能ではありません。再取り込みと、必要に応じた古い文書の整理が必要です。