2016-07-28 89 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 –