J'ai écrit mon propre serveur ElasticSearch en mémoire dans la version 5.1.1. Cela fonctionne correctement pour l'ajout de documents, mais échoue lors de la suppression.Les conflits Delete_by_query ne fonctionnent pas dans ElasticSearch 5.1.1 avec netty4
dépendances Maven:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>5.1.1</version>
<scope>test</scope>
</dependency>
Carte des paramètres pour le nœud:
settingsMap.put("node.name", nodeName);
settingsMap.put("path.conf", "target");
settingsMap.put("path.data", "target");
settingsMap.put("path.logs", "target");
settingsMap.put("path.home", "target");
settingsMap.put("http.type", "netty4");
settingsMap.put("http.port", httpPort);
settingsMap.put("transport.tcp.port", httpTransportPort);
settingsMap.put("transport.type", "netty4");
settingsMap.put("action.auto_create_index", "false");
méthode de suppression de nombreux documents une fois:
public boolean deleteType() throws IOException, CustomResponseException {
String query = "{\n" + " \"query\": {\n" + " \"match_all\": {}\n" + " }\n" + "}";
HttpEntity entity = new NStringEntity(query, ContentType.APPLICATION_JSON);
Response indexResponse = restClient.performRequest("POST",
"/" + this.getIndex() + "/" + this.getType() + "/_delete_by_query?conflicts=proceed",
Collections.<String, String>emptyMap(), entity);
return processStatusCode(indexResponse.getStatusLine()) == 200;
}
Quand je lance des tests, j'obtiens l'erreur :
org.elasticsearch.client.ResponseException: POST http://localhost:9205/testindexer/indexer/_delete_by_query?conflicts=proceed : HTTP/1.1 400 Bad Request {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"request [/testindexer/indexer/_delete_by_query] contains unrecognized parameter: [conflicts]"}],"type":"illegal_argument_exception","reason":"request [/testindexer/indexer/_delete_by_query] contains unrecognized parameter: [conflicts]"},"status":400}
En outre, lorsque je l'exécute sans conflit en cours, je reçois en réponse que le document est créé. Pourquoi ça marche différemment que dans la documentation pour cette version?
Voici l'état de mon noeud:
{
"name" : "indexernode",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "trP6UQg1SMKVyfR0qTEjYw",
"version" : {
"number" : "5.1.1",
"build_hash" : "5395e21",
"build_date" : "2016-12-06T12:36:15.409Z",
"build_snapshot" : false,
"lucene_version" : "6.3.0"
},
"tagline" : "You Know, for Search"
}