2

ドキュメントのバージョンを同じに維持しながら、ElasticSearch ドキュメントを更新したいと考えています。index_ documentationのバージョン管理セクションに示されているように、 version_type=external を使用しています。そのセクションで示されているように、同じバージョンの別のドキュメントでドキュメントを更新することは、通常は防止されます。

バージョンを変更せずに保持したい理由は、オブジェクトに新しいタグを追加するときに (データベースに保存されている) オブジェクトの新しいバージョンを作成しないためですが、新しいタグを ElasticSearch インデックスに表示したいからです。 . これはElasticSearchで可能ですか?

ドキュメントを削除してから、同じ ID とバージョンの新しいドキュメントを追加しようとしましたが、それでも次の例外が発生します。

VersionConflictEngineException[[myindex][2] [mytype][6]: バージョンの競合、現在の1、指定された1 ]

参考までに、私は PHP Elastica (メソッド$type->deleteDocument($doc);$type->addDocument($doc);) を使用していますが、この質問は一般的に ElasticSearch に適用する必要があります。

4

1 に答える 1

2

Elasticsearch が削除されたドキュメントに関する情報を保持する時間は、index.gc_deletesパラメーターによって制御されます。デフォルトでは、この時間は1mです。したがって、理論的には、この時間を に減らし0s、少し待ってからドキュメントを削除し、同じバージョンの新しいドキュメントにインデックスを付けて、 にindex.gc_deletes戻すことができ1mます。しかし、現時点では、バグにより master でのみ機能します。以前のバージョンの Elasticsearch を使用している場合は、index.gc_deletes最初にインデックスを閉じないと変更できません。

Elasticsearch.org Web サイトには、elasticsearch がバージョンを処理する方法について詳しく説明している優れたブログ投稿があります。

于 2013-07-27T18:30:48.283 に答える