2017-06-06 3 views
0

2年前に誰かが尋ねたhow to do upserts when you don't know a document's id。 (受け入れられない)回答はfeature request となり、その結果は_update_by_query APIとなりました。質問を基にしたElasticsearch upsert

_update_by_queryヒットが存在しない場合は挿入が許可されないため、実際にアップセルではなく、更新を行う別の方法です。

_idなしでアップサートを行う方法はありますか?私のクエリは常に1つまたは0の結果を返すことを知っています。それとも、私は複数のリクエストを強制する必要がありますか(独自性を維持していますか)?

答えて

0

これは現在可能ではないようです。 _updateupsert属性を提供しますが、これは残念なことに_update_by_queryでは機能しません。以下はちょうどあなたにエラーを返しますUnknown key for a START_OBJECT in [upsert].

POST website/doc/_update_by_query?conflicts=proceed 
{ 
    "query": { 
    "term": { 
     "url": "http://foo.com" 
    } 
    }, 
    "script": { 
    "inline": "ctx._source.views+=1", 
    "lang": "painless" 
    }, 
    "upsert": { 
     "views": 1, 
     "url": "http://foo.com" 
    } 
} 
関連する問題