2016-07-28 90 views
0

我想在我的所有elasticsearch索引文档中替换单个用户名。有没有API查询?在elasticsearch中查找并替换所有文档

我试过搜索多个,但找不到。任何人有想法?

我的情景:

curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"mad", "role":"tester"}' 
 
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"bob", "role":"engineer"}' 
 
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"cat", "role":"engineer"}' 
 
curl -XPOST 'http://localhost:9200/test/movies/' -d '{"user":"bob", "role":"doctor"}'

我有所谓的 “测试”,然后键入 “电影” 索引上面的数据。在这里我想用“爱丽丝”取代所有“bob”的名字。

感谢

+0

你想做什么?索引提供的数据?搜索?每种方法都有不同的URL/HTTP方法组合。特定类型/索引的'-XPUT'将索引一个文档(如果你指定了一个现有的ID,则替换它)https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html' -XGET'与特定类型/索引获得特定记录https://www.elastic.co/guide/en/elasticsearch/guide/current/get-doc.html等 –

+0

我知道如何使用一个更新文件通过索引ID。但是索引ID是自动生成的。我想在所有文档中用另一个替换一个字符串。 –

回答

1

update-by-query是要走的路。

POST /test/movies/_update_by_query 
{ 
    "script": { 
    "inline": "ctx._source.user = 'alice'" 
    }, 
    "query": { 
    "term": { 
     "user": "bob" 
    } 
    } 
} 

注意:请确保enable dynamic scripting为了这个工作。

+0

非常感谢。像魅力一样工作。 –

+0

真棒,很高兴它帮助! – Val

+0

我们是否需要为此启用groovy和内联脚本? 如果你知道确切的语法,你可以在这里评论? script.inline:true script.indexed:true –