条件に一致する文書を一括更新したいと思います。
ESバージョン:5.1.1
インデックス:index_1234
タイプ:アドレス
URL:POST http://localhost:9200/index_1234/addresses/_update_by_query
ペイロード:特定の条件に一致するElasticSearch文書を更新してください
{
"id":1,
"address":"temp address"
}
私は書類に
{
"script": {
"inline": "if(ctx._source.containsKey(\"address\") && ctx._source.address == "temp address"){ctx._source.address='perm address'}"
}
}
を更新するには、次のインラインスクリプトを使用しています
ie "address"フィールドの値が "temp address"の場合、 "perm address"と置き換えます
このスクリプトは完全に動作し、一致するドキュメントのみを更新します。私は疑問を持っているしかし
その5「一時アドレス」として「アドレス」フィールドがあり、5は上記のスクリプトを実行するには、「パーマアドレス」
として「アドレス」フィールドを持っているから、合計10個の文書が存在すると仮定それが唯一の5文書を更新もののので、O/P
{
"took": 131,
"timed_out": false,
"total": 10,
**"updated": 10**,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
}
を以下与えます(私はダブルチェックして)、最終的な応答では、「更新」と言う:10.私は「更新」期待していた:5、私が行方不明です何か ? 他のものを更新していますか?つまり、一致する文字列を持たないドキュメントの場合でも、すべてのドキュメントについて「_バージョン」が更新されていることがわかります。
ありがとうございます!
UPDATE:次のように更新クエリでのマイク・フィールドのチェックによると迅速な対応のための
おかげでたくさんのMike :)
を更新する必要があります。
"query": {
"exists": {
"field": "address"
}
}
しかし、もう1つ問題があります。
最初は質問の簡素化のためにフィールドを最小限に保っていました。 実際には、ペイロードには多くのフィールドがあり、いくつかの条件に基づいて3つを更新したいと考えています。
ので、
{
"id":12,
"address":"temp address",
"email":"temp email",
"phone":"temp phone",
.
.
.
}
を次のようにペイロードはであり、我々は複数のフィールドのためのマイクのソリューションを更新することができ、私はすべての3つのフィールド
{
"script": {
"inline": "if(ctx._source.containsKey(\"address\") && ctx._source.address == "temp address"){ctx._source.address='perm address'}if(ctx._source.containsKey(\"email\") && ctx._source.email == "temp email"){ctx._source.email='perm email'}if(ctx._source.containsKey(\"phone\") && ctx._source.phone == "temp phone"){ctx._source.phone='perm phone'}"
}
}
を更新するには、次のスクリプトを使用しています?またはこれを行うための別の方法がありますか? もう一度おねがいします!
こんにちはマイク、非常に迅速な応答ありがとう:)私は質問を更新しました今、「更新」セクションを見てください。 ?? – SSG
更新された質問に返信を追加しました@SSG – Miek
ありがとうございました!しかし、3つの条件がすべて一致した場合にのみ、インラインスクリプトが実行されると考えられます.3つの条件のうち1つまたは2つ、または3つすべてが一致するケースがあります。 – SSG