Как добиться множественного удаления из остальных клиентов высокого уровня 6.2.4? - PullRequest
0 голосов
/ 13 марта 2019

Следующий код работает только для ElasticSearchClient. Я хочу использовать версию RestHighLevelClient 6.2.4.

BulkByScrollResponse response = 
    DeleteByQueryAction.INSTANCE.newRequestBuilder(restClient)
                       .source("persons")
                       .get();
            long deleted = response.getDeleted();

1 Ответ

1 голос
/ 13 марта 2019

API Delete by Query поддерживается только в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...