Подключив Hibernate Search к Elasticsearch, я заметил, что при развертывании одной не ES, моя служба не сможет подключиться успешно. Мне кажется, переменная окружения для установки required_index_status игнорируется. Я ищу опечатку или что-то подобное уже полчаса, но ничего не могу найти.
pom. xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
</parent>
...
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>5.11.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-elasticsearch</artifactId>
<version>5.11.0.Final</version>
</dependency>
application.yml
spring:
data:
rest:
basePath: /
jpa:
hibernate:
ddl-auto: update
show-sql: false
Переменные среды:
$ kubectl describe pod <NAME>
Environment:
...
SPRING_JPA_PROPERTIES_HIBERNATE_SEARCH_DEFAULT_INDEXMANAGER: elasticsearch
SPRING_JPA_PROPERTIES_HIBERNATE_SEARCH_DEFAULT_ELASTICSEARCH_HOST: elasticsearch
SPRING_JPA_PROPERTIES_HIBERNATE_SEARCH_DEFAULT_ELASTICSEARCH_REQUIRED_INDEX_STATUS: yellow
Сообщение в журнале 1:
Caused by: org.hibernate.search.exception.SearchException: HSEARCH400024: Timed out while waiting for for index 'myindex' to reach status 'green'; status was still 'yellow' after 10000ms.
Сообщение в журнале 2:
Caused by: org.hibernate.search.exception.SearchException: HSEARCH400007: Elasticsearch request failed.
Request: GET /_cluster/health/myindex with parameters {wait_for_status=green, timeout=10000ms}
Response: 408 'Request Timeout' with body
{
"cluster_name": "my-elastic-cluster",
"status": "yellow",
"timed_out": true,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 5,
"active_shards": 5,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 5,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 50.0
}
Мы ясно видим, что это ожидание статуса «зеленый» вместо «желтый».