2013-04-11 13 views
8

私はElasticSearchを初めて使用していますので、これはおそらく非常に些細なことですが、スクリプトを使って処理し、レジスタを1つずつ更新する。elasticsearch内のすべてのレコードのフィールドを更新する

私は、単純なSQLの更新のようなものを作りたい:

UPDATE RECORD SET SOMEFIELD = SOMEXPRESSION 

私の意図は、(その表現は基本的にランダムのプールから選択され、より理にかなって、いくつかのデータと実際の偽のデータを交換することです有効な値)。

答えて

14

クエリを使用してドキュメントを更新できるようにすることについては、openissuesがあります。

技術的な課題は、lucene(elasticsearchがフードの下で使用するテキスト検索エンジンライブラリ)セグメントが読み取り専用であることです。既存の文書は変更できません。あなたがする必要があるのは、古いバージョンの文書を削除することです(途中でセグメントマージが発生するまで削除されたマークが付けられます)。これが既存のupdate apiの機能です。したがって、クエリによる更新には時間がかかり、問題が発生する可能性があります。そのため、まだリリースされていません。実行中のクエリを中断することを可能にするメカニズムは、この場合にはうまくいくでしょう。

しかし、正確にその機能を公開するupdate by query pluginがあります。それを使用する前に、潜在的なリスクに注意してください。

+1

私が描いた結論... NoSQLについての誇大宣伝はすべて理解できません:( – fortran

+0

ここではNoSQLよりもluceneについてですが、Luceneは更新されず、再インデックスするだけです。あなた自身:もしそれが有用だったら私は答えを受け入れるように頼むことができますか? – javanna

関連する問題