Sto tentando di eseguire l'aggiornamento a ES 2.0. Ho scaricato ES 2.0 e l'ho installato sulla mia macchina Windows.Elasticsearch 2.0: come eliminare per query in Java
Nel mio pom.xml, ho il seguente:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.0.0-rc1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>delete-by-query</artifactId>
<version>2.0.0-rc1</version>
</dependency>
Nel mio codice Java, ho fatto cancellare dalla query nel seguente modo quando si utilizza ES 1.7.3:
StringBuilder b = new StringBuilder("");
b.append("{");
b.append(" \"query\": {");
b.append(" \"term\": {");
b.append(" \"category\": " + category_value);
b.append(" }");
b.append(" }");
b.append("}");
client = getClient();
DeleteByQueryResponse response = client.prepareDeleteByQuery("myindex")
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
Spero di sostituire questo:
DeleteByQueryResponse response = client.prepareDeleteByQuery("myindex")
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
con ES 2.0 modo. Cercata su Google ma non è riuscito a trovare un esempio per questo. La documentazione dell'API online mi sembra troppo astratta. Come posso farlo?
Un'altra domanda: devo installare il plug-in delete-by-query nel server Elasticsearch?
Grazie per qualsiasi puntatore!
UPDATE
ho seguito il suggerimento di Max, e qui è quello che ho adesso:
In primo luogo, quando si crea il cliente, effettuare le impostazioni hanno il seguente aspetto:
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "mycluster")
.put("plugin.types", DeleteByQueryPlugin.class.getName())
.build();
Seconda , nel posto in cui viene eseguita la cancellazione per query:
DeleteByQueryResponse rsp = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
.setIndices("myindex")
.setTypes("mydoctype")
.setSource(b.toString())
.execute()
.actionGet();
ho installato anche cancellare dal plugin di ricerca eseguendo il seguente nella directory principale di ES:
bin\plugin install delete-by-query
ottengo errori se non installare questo plugin.
Dopo tutti questi passaggi, le parti correlate a ES funzionano perfettamente.
Ciao Max, grazie per avermi aiutato! Cosa intendi con "utilizzando il nodo locale"? Ho tutto sul mio taccuino. L'app Web Java viene eseguita sulla porta 8080 e ES viene eseguita sulla porta 9300. Devo avviare manualmente i due uno per uno. Un'altra cosa: la tua impostazione delle impostazioni è errata. Ho aggiornato il mio codice e ho sempre ricevuto l'errore del puntatore nullo. – curious1
Salve, con il nodo locale intendevo utilizzare il nodo ES incorporato (https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/node-client.html). Quando lo usi, non devi avviare un altro client elasticsearch. Penso che ti stia connettendo al tuo nodo elasticsearch usando il client di trasporto (https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html). Dove si ottiene esattamente il puntatore nullo? – Max
Ok, vedo che anche se non si utilizza il nodo incorporato, è necessario inserire plugin.types. Sto modificando il mio commento per questo. – Max