Ich möchte ein externes Skript mit ElasticSearch's _update api aufrufen. Es scheint, als ob das Skript nie wirklich ausgeführt wird. Ein entsprechendes Inline-Skript führt die erwarteten Aktualisierungen durch.ElasticSearch _update mit Script-Datei nicht ausgeführt
Irgendwelche Ideen, warum dies der Fall sein könnte?
Das Skript sieht wie folgt aus:
scripts/update_comments.groovy
"ctx._source.comments+=new_comment"
Meine elastische Abfrage wie folgt aussieht:
POST my_index/blog/1/_update
{
"script": {
"script_file": "update_comments",
"params": {
"new_comment": {
"name": "Jon Snow",
"comment": "Winter is coming"
}
}
}
}
Ausführen eines GET /my_index/blog/1
kehrt die Originaldokument, nicht das aktualisierte e. Beachten Sie, dass die _version
Nummer erhöht, obwohl nichts geändert hat.
{
"_index": "my_index",
"_type": "blog",
"_id": "1",
"_version": 2,
"found": true,
"_source": {
"name": "Guy",
"body": "This is a post",
"comments": [
{
"name": "Foo bar",
"comment": "Great article"
}
]
}
}
Für die Prüfung, habe ich script.groovy.sandbox.enabled: true
und lief die gleiche Abfrage, nur mit einem Inline-Skript:
{
"script": "ctx._source.comments+=new_comment",
"params": {
"new_comment": {
"name": "Jon Snow",
"comment": "Winter is coming"
}
}
}
Und bekam das erwartete Ergebnis:
{
"_index": "my_index",
"_type": "blog",
"_id": "1",
"_version": 3,
"found": true,
"_source": {
"name": "Guy",
"body": "This is a post",
"comments": [
{
"name": "Foo Bar",
"comment": "Great article"
},
{
"name": "Jon Snow",
"comment": "Winter is coming"
}
]
}
}
Es ist gerettet. Ich sehe auch in der stdout, dass das Skript geladen wurde – funseiki
Dann ist dies nicht korrekt 'config/update_comments.groovy' und irreführend – Val
Haben Sie' script.file: true' in Ihrer Konfiguration? – Val