データストアのスクリプトでnew Date(...)を返すと、日付ではなくJavaScriptのオブジェクトとして登録され、日付フィールドの型エラーになる場合がありました。FessのJavaScriptエンジンで、評価結果の日付をjava.util.Dateへ変換する修正がマージされました。
最終更新日時のフィールド名
インデックスのフィールド名はlast_modifiedです。lastModifiedという別の名前では、最終更新日時を設定できません。
JavaScriptで実行するデータストア設定のスクリプト欄で、timestampという変数にエポック秒が入っている例です。変数名は利用しているデータストアが公開する名前に合わせてください。
last_modified=new java.util.Date(Number(timestamp) * 1000)
java.util.DateはすでにJavaの日付なので、この修正による変換は不要です。修正を含むビルドでは、次の組み込みDateを返す書き方もJavaの日付へ変換されます。
last_modified=new Date(Number(timestamp) * 1000)
15.9開発版ではJavaScriptが既定のスクリプトエンジンです。ただしデータストア設定で選択するエンジンを確認してください。Groovyなどの別エンジンへ同じ例をそのまま適用する説明ではありません。秒をミリ秒へ変換するために1000倍しており、元データがミリ秒なら掛け算は不要です。
変換の範囲と制限
変更の対象はJavaScriptエンジンの評価結果そのものがDateである場合です。オブジェクトや配列の内側にあるDateを再帰的に変換する処理は追加していません。無効なDateはエポック時刻ではなくnullになります。文字列などDate以外の結果はそのままです。
修正前の型エラーでは、その文書を含む一括登録が失敗することがあります。失敗したデータは自動的に復元されるわけではないため、スクリプトを直して対象を再クロールし、障害URLやクロールログ、実際のlast_modifiedを確認してください。PRでは変換処理の単体テストを実施していますが、実CSVクロールによる検証は未実施とされています。