2016-07-28 36 views
0

Ich wollte den einzelnen Benutzernamen in allen meinen Elasticsearch Index Dokumenten ersetzen. Gibt es eine API-Abfrage?Suchen und Ersetzen in elasticsearch alle Dokumente

Ich versuchte mehrere suchen, konnte aber nicht finden. Hat jemand eine Idee?

Mein Szenario:

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"}'

Ich habe die obigen Daten in den Index namens "test" und geben Sie "Filme". Hier wollte ich den Namen "bob" durch "alice" ersetzen.

Dank

+0

Was versuchen Sie zu tun? Indexieren Sie die bereitgestellten Daten? Suche? Es gibt verschiedene Kombinationen von URLs und HTTP-Methoden. '-XPUT' für einen bestimmten Typ/Index indexiert ein Dokument (ersetzt es, wenn Sie eine bestehende ID angeben) https://www.elastic.co/guide/en/elasticsearch/guide/current/index-doc.html' "XGET" mit bestimmten Typ/Index, um einen bestimmten Datensatz zu erhalten https://www.elastic.co/guide/en/elasticsearch/guide/current/get-doc.html usw. –

+0

Ich weiß, wie man mit einem Update aktualisieren Dokument durch Aufnahme der Index-ID. Die Index-ID wird jedoch automatisch generiert. Ich wollte in allen Dokumenten eine Zeichenfolge durch eine andere ersetzen. –

Antwort

1

update-by-query ist der Weg zu gehen.

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

Hinweis: Stellen Sie sicher, dass enable dynamic scripting, damit dies funktioniert.

+0

Vielen Dank. Funktioniert wie Charme. –

+0

Super, froh, dass es geholfen hat! – Val

+0

Müssen wir groovy und Inline-Skript dafür aktivieren? Wenn Sie genaue Syntax wissen, können Sie bitte hier kommentieren? script.inline: true script.indexed: true –