Gibt es eine Möglichkeit, Term in ein Array von Werten anzuhängen?Elasticsearch - wie man Begriff anfügt?
Zum Beispiel, wenn mein Dokument sieht wie folgt aus:
{
"items": ["item1", "item2", "item3"]
}
ich will „item4“ und „item5“, um es anzuhängen.
Ich muss es in 2 Abfragen tun? eine, um die aktuelle Liste von Werten zu laden, und um diese Liste zu aktualisieren? Oder gibt es eine elegantere Methode, die es mir erlaubt, diese Elemente in einer Abfrage anzuhängen?
Ich versuche es mit elastic4s wie diesem zu tun:
client.execute(ElasticDsl.update id id in indexName/documentType script {
script(s"ctx._source.items += tag").params(Map("tag"->"item4"))
})
Um den oben genannten Code-Schnipsel zu verwenden, muß ich groovy Skripte ermöglichen, und ich bin nicht sicher, wie es mit mehr Artikeln zu tun .
Irgendeine Idee?
einfache Weise tun es mit zwei Abfragen nützlich sein. Aber Sie können benutzerdefinierte Skripts verwenden [1] (http://stackoverflow.com/questions/18028280/elasticsearch-upserting-and-appending-to-array), [2] (http://stackoverflow.com/questions/31142729/append-to-a-elasticsearch-Feld-Liste-Array-wenn-es-nicht-ein-vorhanden-Element), um es mit einer Abfrage zu tun. – pkhlop
@pkhlop Danke. Was ist mit mehreren Artikeln? wie kann ich das machen? – Tomer