私は既に多くの文書でいっぱいの索引を持っています。
インデックス内のすべてのドキュメントには、name
文字列フィールドがあります。
name = A
のすべてを照会して更新し、name = B
に設定したいとします。ドキュメントによると、elasticsearch APIで
UPDATE FROM table SET name = 'B' WHERE name = 'A';
elasticsearch _update_by_queryを使用して文字列フィールドを更新するにはどうすればよいですか?
: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update-by-query.html
私はこのクエリを試してみました:
POST my_index/_update_by_query
{
"script": {
"inline": "ctx._source.name = 'B'",
"lang": "painless"
},
"query": {
"term": {
"name" : "A"
}
}
}
しかしSQLにそれはようなものになるだろう。明確にするため
、何も変更されていないことを返します。私はまだname = Aの文書を見つけることができるので、編集されていません。
{
"took": 1,
"timed_out": false,
"total": 0,
"updated": 0,
"deleted": 0,
"batches": 0,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
}
なぜ私の_update_by_queryは何もしませんか?