2016-05-05 8 views
1

私は、間違った(私たちの)国名で作成されたelasticsearch上の複数のドキュメントを更新しようとしています。elasticsearchでmuiltipleドキュメントを更新する方法1.5.2

"update_by_query"プラグインバージョン2.5.0(ES 1.5.2で動作するはずです)を使用しています。

このplugin pageは、私が試したものです:

POST incidents/political/_update_by_query 
{ 
    "query":{ 
    "filtered":{ 
     "filter":{ 
     "bool":{ 
      "must":{ 
      "term":{ 
       "CountryName": "Cote d'Ivoire"   
      } 
      } 
     } 
     } 
    } 
    }, 
    "script":{ 
    "inline":"ctx._source.CountryName = newName", 
    "params":{ 
     "newName":"Cote dIvoire" 
    } 
    } 
} 

と結果は次のとおりです。

{ 
    "ok": true, 
    "took": 9, 
    "total": 2, 
    "updated": 0, 
    "indices": [ 
     { 
     "incidents": {} 
     } 
    ] 
} 

私はこれら二つのレコードを検索することが可能であることを見ることができますが、それらを更新することはできません何らかの理由で。

私は、configファイルに必要な設定を有効にしている:

script.inline: on 
script.indexed: on 
script.disable_dynamic: false 

私が欠けているか間違っていることができるかわかりません。

+0

追加してみましたか?script.engine.groovy.inline.update:on? – alpert

+0

@alpert jusはそれを試して動作しませんでした。 – Yatiac

+1

ドキュメントを正しい値で再インデックスすることができます。 – alpert

答えて

2

はこのようなクエリのスクリプト部分を書くようにしてください:

"script" : "ctx._source.CountryName = 'Cote dIvoire'" 

それが動作するかどうか私に教えてください。

+0

感謝の男!それは魅力的なように働いた。なぜ私の道がうまくいかないのか教えていただけますか? – Yatiac

+1

喜んで私は助けることができました。私はあまりよく分からない。私は数日前に同じ問題に遭遇し、この方法で私の問題を解決しました。 :) –

+0

私は別の問題に遭遇した、私は引用符を追加する必要がありますが、スクリプトは特殊文字を受け入れていないようです。私はそれをエスケープ(\ ')したり、htmlコード(')を使ってみましたが、うまくいきませんでした。どのようにそれを含める考えですか? – Yatiac

関連する問題