У нас есть кластер из 10 узлов, имеющий всего несколько ГБ данных.У нас есть 5 индексов (всего 28 основных шардов) и репликация 1 для каждого шарда.Вчера вечером мы удалили 2 индекса и повторно загрузили данные в эти индексы.После этого мы видим следующую ошибку при попытке прочитать данные из любого из индексов:
java.io.IOException: listener timeout after waiting for [30000] ms
at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:617) ~[rest-5.2.2.jar:5.2.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:212) ~[rest-5.2.2.jar:5.2.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:184) ~[rest-5.2.2.jar:5.2.2]
Я искал на форуме Elastic Search и SO аналогичные проблемы, но предложения в основном предназначены для длительного приема пищи.или массовые обновления, которые не применимы к нашему сценарию, так как мы наблюдаем эту ошибку во время поиска.Если я пытаюсь выполнить тот же запрос с помощью команды curl, войдя в систему на одном из узлов ES, он работает без ошибок и возвращает результаты.
Это код, который мы используем для создания RestClient
public RestClient getElasticServerRestClient(String sourceESServerIp, int sourceESServerPort,
String sourceESServerProtocol, final String userName, final String password,String resource) {
try {
HttpHost elasticCacheHost = new HttpHost(sourceESServerIp, sourceESServerPort, sourceESServerProtocol);
RestClientBuilder restClientBuilder = RestClient.builder(elasticCacheHost);
restClientBuilder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
int maxConnTotal = cacheConfigurations.getMaxTotalConnections();
if (maxConnTotal > 0) {
httpClientBuilder.setMaxConnTotal(maxConnTotal);
}
int maxConnPerRoute = cacheConfigurations.getMaxConnectionsPerRoute();
if (maxConnPerRoute > 0) {
httpClientBuilder.setMaxConnPerRoute(maxConnPerRoute);
}
if (userName != null && !userName.trim().isEmpty() && password != null && !password.trim().isEmpty()) {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName,
password));
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
return httpClientBuilder;
}
});
RestClient elasticServerRestClient = restClientBuilder.build();
return elasticServerRestClient;
}
catch (Throwable t) {
log.error("Error in getElasticServerRestClient", t);
return null;
}
}
Состояние кластера зеленое, и никаких признаков других проблем из журналов также нет.Пожалуйста, поделитесь любыми предложениями о том, как определить причину сбоя.
Спасибо и С уважением, Шобхана