2016-06-29 4 views
3

私は存在しない可能性があり、ドキュメントを更新するためにアップサートを使用しています:ElasticSearch:Partialドキュメントを更新または削除します。 ElasticSearchで(アップサートの反対側)

POST /website/pageviews/1/_update 
{ 
    "script" : "ctx._source.online+=1", 
    "upsert": { 
     "online": 1 
    } 
} 

私のデータが頻繁に変更しようとしているので、私はonline == 0場合は私の文書を削除します。

ドキュメントを入手して毎回onlineの値をチェックする必要がある場合は、updateを使用するのは無駄でしょう。私は多くのゴミ箱文書を蓄積したくありません。

online == 0のときに私の文書を削除する最も良い方法はどれですか?以下のような何か:

POST /website/pageviews/1/_update 
{ 
    "script" : "ctx._source.online-=1", 
    "remove_doc": "ctx._source.online == 0" 
} 

答えて

2

あなたはこのようdelete operationを使用することができます。

POST /website/pageviews/1/_update 
{ 
    "script" : "if (online == 0) { ctx.op = 'delete' } else { ctx._source.online += 1 }", 
    "upsert": { 
     "online": 1 
    } 
} 
関連する問題