/ / Aktualisieren von elasticsearch-Daten mithilfe von elasticserch dsl - Python, elasticsearch, elasticsearch-dsl

Aktualisieren Sie elasticsearch Daten mit elasticserch dsl - python, elasticsearch, elasticsearch-dsl

Wie kann ich aktualisieren? elasticsearch Daten mit elasticsearch-dsl Paket? Ist das möglich ?

ich fand elasticsearch update api, aber es scheint etwas schwierig zu sein. Was ich suche, ist

searchObj = Search(using=logserver, index=INDEX)
searchObj=searchObj.query("term",attribute=value).update(attribute=new_value)
response = searchObj.execute()

Antworten:

0 für die Antwort № 1

Wenn ich mich nicht irre elasticsearch_dsl hat keine Option für die Aktualisierung / Massenaktualisierung.
Wenn Sie möchten, können Sie verwenden elasticsearch-py pckage für das gleiche.

Beispiel

from elasticsearch import Elasticsearch

INDEX = "myindex"
LOG_HOST = "myhost:myport"
logserver = Elasticsearch(LOG_HOST)

script = "ctx._source.attribute = new_value"

update_body = {

"query": {
"bool": {
"filter": {
"term": {"attribute": "value"}
}
}
},

"script": {
"source": script,
"lang": "painless"

}

}

update_response = logserver.update_by_query(index=INDEX, body=update_body)



Weitere Informationen finden Sie hier offizielle Dokumentation


0 für die Antwort № 2

@kingArther Antwort ist nicht korrekt.

elasticsearch-dsl Support-Update sehr gut!

Durch die Zuordnung eines Index zu einem Objekt (DocType) ist dies möglich Sie können ohne JSON-Rest-Anforderungen einfach speichern und aktualisieren.

Sie finden Beispiele für eine API Hier


0 für die Antwort № 3

Es ist wahrscheinlich spät, aber ich lasse diese Antwort fürdiejenigen, die immer noch das gleiche Problem haben: elasticsearch-dsl bietet eine Update-Funktion, die für Klassen aufgerufen werden kann, die die Document-Klasse von elasticsearch-dsl erweitern. Folgendes ist der Code:

data = yourIndexClass.get(id=documentIdInIndex)
data.update(key=NewValue)

Das ist es. Einfach. Details finden Sie hier