Ich verwende derzeit Elasticsearch V2.3.1. Ich möchte die folgende Elasticsearch-Abfrage in Java verwenden.Update von Abfrage in Elasticsearch mit Java
Die obige Abfrage sucht nach "user" namens "kimchy" und aktualisiert das Feld "List" mit den angegebenen Werten. Diese Abfrage aktualisiert mehrere Dokumente gleichzeitig. Ich lese über die Update-API für Java hier https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.3/java-docs-update.html aber konnte nicht finden, was ich suchte. Die Update-API für Java spricht nur von der Aktualisierung einzelner Dokumente gleichzeitig. Gibt es eine Möglichkeit, mehrere Dokumente zu aktualisieren? Entschuldigung, wenn mir etwas offensichtlich fehlt. Vielen Dank für Ihre Zeit.
Update:
Ich habe versucht, die folgenden Java-Code:
Client client = TransportClient.builder().addPlugin(ReindexPlugin.class)
.build().addTransportAddress(new InetSocketTransportAddress(
InetAddress.getByName("127.0.0.1"), 9300));
UpdateByQueryRequestBuilder ubqrb = UpdateByQueryAction.INSTANCE
.newRequestBuilder(client);
Script script = new Script("ctx._source.List = [\"Item 1\",\"Item 2\"]");
//termQuery is not recognised by the program
BulkIndexByScrollResponse r = ubqrb.source("twitter").script(script)
.filter(termQuery("user", "kimchy")).execute().get();
So bearbeitete ich das Java-Programm, wie oben und der Termquery wird von Java nicht identifiziert. Darf ich wissen, was ich hier falsch mache? Vielen Dank.
Sie müssen 'import static org.elasticsearch.index.query.QueryBuilders.termQuery hinzuzufügen;' – Val
Hi @Val, es funktioniert aber auf diese Weise (mit Filter in BulkIndexByScrollResponse) Ich kann nur ein Dokument aktualisieren, das einen Benutzer namens "Kimchy" hat. Ist es möglich, mehrere Dokumente mit setQuery in BulkIndexByScrollResponse zu aktualisieren? oder möglicherweise anders? –
Natürlich können Sie jede Art von Abfrage erstellen. Das war nur ein Beispiel. Was ist deine Frage? – Val