#spring #elasticsearch
#spring #elasticsearch
Вопрос:
Следующий код работает только для ElasticSearchClient. Я хочу использовать RestHighLevelClient версии 6.2.4.
BulkByScrollResponse response =
DeleteByQueryAction.INSTANCE.newRequestBuilder(restClient)
.source("persons")
.get();
long deleted = response.getDeleted();
Ответ №1:
API-интерфейс удаления с помощью запроса поддерживается только в RestHighLevelClient начиная с версии 6.5 и выше.
Однако, если вы используете 6.2.4, вы все равно можете вызвать _delete_by_query
конечную точку, используя низкоуровневый клиент:
Response response = restClient.performRequest("POST", "/persons/_delete_by_query");
String jsonResponse = EntityUtils.toString(response.getEntity());
// parse the JSON and do something
Если вам нужно передать запрос, вы можете сделать это следующим образом:
Map<String, String> params = Collections.emptyMap();
String jsonString = "{ "query": { "range" : { "age" : { "gte" : 10 } } } }";
HttpEntity query = new NStringEntity(jsonString, ContentType.APPLICATION_JSON);
Response response = restClient.performRequest("POST", "/persons/_delete_by_query", params, query);
String jsonResponse = EntityUtils.toString(response.getEntity());
// parse the JSON and do something
Комментарии:
1. отличное предложение, я довольно новичок в elastic search: не могли бы вы, пожалуйста, сообщить мне, как передать{ «query»: { «range»: { «age»: { «gte»: 10 } } }} в вашем ответе. также обратите внимание, что у меня будет массив индексов и gte dte
2. Большое спасибо за то, что сделали это так просто для меня.
3. У меня есть еще один вопрос: что, если бы у меня было несколько индексов для удаления, как я могу использовать список индексов?
4. просто замените
persons
наpersons,index2,index3,etc
5. Пожалуйста, задайте новый вопрос