私は、ES インデックス操作を傍受し、特定の状況下でフィールドの内容を変更する、前述のメンテナンス タスクに取り組んでいます。
私の質問は次のとおりです。ドキュメントを操作するにはどうすればよいですか? index.docs() メソッドがあります。たとえば、最初の (そして唯一の) ドキュメントをフェッチし、フィールドを追加して、それを保持したいのですが、残念ながら、フィールドは設定/削除されません。
例:
indexingService.addListener(new IndexingOperationListener() {
@Override
public Index preIndex(Engine.Index index) {
List<Document> docs = index.docs();
List<Document> finalDocs = new ArrayList<Document>();
for (Document d : docs) {
d.removeField("field1");
finalDocs.add(d);
}
index.docs().clear();
index.docs().addAll(finalDocs);
return index;
}
});
私が間違っていることはありますか?削除されたフィールドは永続化されません:(
ヒントをありがとう!