Ich möchte alle Dokumente im Index aktualisieren. Ich habe festgestellt, dass die Aktualisierungsabfrage die Methode ist, die wir verwenden sollten. Aber ich stehe vor einem Problem, wenn ich ctx._now als Wert für das Feld des aktualisierten Dokuments verwende, wodurch der Feldwert null wird.Elasticsearch Update von Abfrage mit CTX
Dies ist die Probe:
{
"script": {
"inline": "ctx._source.timenow = ctx._now"
},
"query": {
"match_all": {}
}
}
Wenn ich Zufallszahlenwert verwende, ist es Arbeit. Nehmen wir an, dass ich tifenow = 5 setze. Dann werden alle Dokumente field timenow 5. Aber es ist nicht Arbeit mit dieser ctx-Methode.
Wie soll ich das tun?
Weitere Informationen
Das ist mein ES Informationen:
"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
}
ich ctx._now verwende, weil es Arbeit auf dem Dokument Update ist. Hier ist der Fall:
{
"script": "ctx._source.timenow2 = ctx._now"
}
Beispiel: POST index/Typ/24/_update
hier die Dokumente von elastisch sind:
Neben _Source, Die folgenden Variablen sind über die ctx-Map verfügbar: _index, _type, _id, _version, _routing und _now (der aktuelle Zeitstempel).
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
danken Ihnen
wo hast du 'ctx._now' sehen? Welche Version von ES verwenden Sie? – Val
Wenn alle Ihre Tuenows auf null aktualisiert werden, bedeutet das, dass '_now' kein Feld auf' ctx' ist. Wofür hast du "_now" benutzt (wo findest du Informationen darüber)? Versuchen Sie, die 'timenow'-Werte auf 'Instant.now()' oder so einzustellen, um zu sehen, wie das funktioniert. – ryanlutgen
Ich habe Update meine Frage ctx._now hinzufügen. Wie kann ich Instant.now() verwenden? –