У меня есть кластер ES в Azure, и я общаюсь с ним из приложения Spring Boot, используя эластичный поиск RestHighLevelClient.
Следующим компонентом весной является
@Bean
public RestHighLevelClient elasticsearchRestClient() {
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(ipAddress, port))
.setRequestConfigCallback(builder -> builder.setConnectTimeout(10000).setSocketTimeout(90000))
.setHttpClientConfigCallback(httpAsyncClientBuilder ->
httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
Sniffer sniffer = Sniffer.builder(restHighLevelClient.getLowLevelClient()).setSniffIntervalMillis(60000).build();
return restHighLevelClient;
}
Здесь ipAddress - IP-адрес loadbalancer в кластере Azure ES, порт 9200. Проблема заключается в том, что если ES простаивает в течение нескольких минут, следующий запросES завершается с ошибкой SocketTimeoutException.
2019-09-26T07: 20: 50.228101050Z: [INFO] java.net.SocketTimeoutException: время ожидания соединения 90 000 миллисекунд при подключении http-outgoing-5 [ACTIVE] 2019-09-26T07: 20: 50.228104650Z: [ИНФО] на org.elasticsearch.client.RestClient.extractAndWrapCause (RestClient.java:773) ~ [asticsearch-rest-client-7.3.2.jar! /: 7.3.2] 2019-09-26T07: 20: 50.228108350Z: [INFO] на org.elasticsearch.client.RestClient.performRequest (RestClient.java:218) ~ [asticsearch-rest-client-7.3.2.jar! /: 7.3.2] 2019-09-26T07: 20: 50.228111750Z: [ИНФО] по адресу org.elasticsearch.client.RestClient.performRequest (RestClient.java:205) ~ [asticsearch-rest-client-7.3.2.jar! /: 7.3.2]2019-09-26T07: 20: 50.228115350Z: [INFO] на org.elasticsearch.client.RestHighLevelClient.internalPerformRequest (RestHighLevelClient.java:1454) ~ [asticsearch-rest-high-level-client-7.3.2.jar! /: 7.3.2] 2019-09-26T07: 20: 50.228118850Z: [ИНФО] в org.elasticsearch.client.RestHighLevelClient.performRequest (RestHighLevelClient.java:1439) ~ [asticsearch-rest-high-level-client-7.3.2.jar! /: 7.3.2] 2019-09-26T07: 20: 50.228122150Z: [ИНФО] вorg.elasticsearch.client.IndicesClient.exists (IndicesClient.java:784) ~ [asticsearch-rest-high-level-client-7.3.2.jar! /: 7.3.2]
Послеэтот сбой, повторная попытка завершается успешно.
Я пытался добавить сниффер в LowLevelRestClient - но безрезультатно.
В чем может быть проблема?Спасибо!