Ich möchte einige meiner indizierten Daten mit einem bestimmten Feld mit Java API aktualisieren. Ich habe dieses Dokument https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-update.html verwiesen und ein Java-Programm erstellt. Mein Java-Programm sieht so aus:Aktualisieren mehrerer Dokumente in elasticsearch mit Java. Ich verwende Elasticsearch 2.3.2
public class App {
public static void main(String[] args) throws Exception {
Client client = TransportClient.builder().build().addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),
9300));
UpdateRequest updateRequest = new UpdateRequest("pibindex", "SearchTech",
"http://www.sea.com/bundle")
.script(new Script("ctx._source.default_collection = \"true\""));
client.update(updateRequest).get();
}
}
Dieses Programm aktualisiert ein einzelnes Dokument basierend auf einem Skript. "pibindex" ist der Name meines Index, "SearchTech" ist der Typ meines Index und "http://www.sea.com/bundle" ist die ID meines Dokuments. Ich möchte mehrere Dokumente mit einem neuen Feld "wiki_collection": true aktualisieren, das einem Muster wie "http://www.sea.com/bundle" entspricht. Ich möchte Platzhalter-Abfrage verwenden.
Ich versuche, diese Elasticsearch Abfrage in Java zu implementieren:
POST /pibindex2/_update_by_query
{
"script": {
"inline": "ctx._source.wiki_collection=true"
},
"query": {
"wildcard": {
"url": {
"value": "http://www.sea.com/bundle/*"
}
}
}
}
Sorry, wenn ich offensichtlich etwas fehlt bin. Vielen Dank.
Diese Antwort könnte helfen: http://Stackoverflow.com/a/37042003/4604579 – Val
@Val Ich habe Ihre Antwort weitergeleitet, jetzt kann ich mehrere Dokumente mit "Termquery" aktualisieren. Aber ich muss "Wildcard-Abfrage" verwenden, um mehrere Dokumente zu aktualisieren, die einem Muster entsprechen. Ich habe diesen Link verwiesen: https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.6/wildcard.html, aber es zeigt nicht, wie genau Wildcard in Java zu verwenden ist – Rose