2016-05-05 14 views
1

Ich versuche, mehrere Dokumente auf elasticsearch zu aktualisieren, die mit einem falschen (für uns) Ländernamen erstellt wurden.So aktualisieren Sie mutipiple Dokumente in elasticsearch 1.5.2

Ich versuche, dies zu tun, indem Sie "update_by_query" Plugin Version 2.5.0 (das sollte mit ES 1.5.2 funktionieren). plugin page

Dies ist, was ich versucht habe:

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

und das Ergebnis ist:

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

Ich kann sehen, dass es in der Lage ist, diese beiden Datensätze zu finden, aber sie nicht aktualisieren können aus irgendeinem Grund.

Ich habe die benötigten Einstellungen auf Konfigurationsdatei aktivieren:

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

Ich bin nicht sicher, was kann oder falsch fehlen.

+0

Haben Sie versucht hinzuzufügen: script.engine.groovy.inline.update: on? – alpert

+0

@alpert jus hat das versucht und hat nicht funktioniert. – Yatiac

+1

Vielleicht können Sie Ihre Dokumente mit korrekten Werten neu indizieren. – alpert

Antwort

2

Versuchen Sie das Skript Teil Ihrer Abfrage wie folgt zu schreiben:

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

Lassen Sie mich wissen, ob es funktioniert.

+0

danke mann! das hat wie ein Zauber funktioniert. Kannst du mir sagen, warum mein Weg nicht funktioniert hat? – Yatiac

+1

Ich bin froh, dass ich helfen konnte. Ich bin mir nicht ganz sicher. Ich bin vor ein paar Tagen auf dasselbe Problem gestoßen und auf diese Weise habe ich mein Problem gelöst. :) –

+0

Ich lief in ein anderes Problem, ich muss das Zitat hinzufügen, aber das Skript scheint kein Sonderzeichen zu akzeptieren. Ich habe versucht, es zu entkommen (\ ') oder usin den HTML-Code ('), aber sie haben nicht funktioniert. Irgendeine Idee, wie man es einschließt? – Yatiac

Verwandte Themen