我有一个具有以下配置的测试项目:
与 OpenSearch 的连接配置如下:
@Configuration
class OpensearchConfig: ReactiveElasticsearchConfiguration() {
val httpHeaders = HttpHeaders()
httpHeaders.add("Content-type", "application/json")
override fun clientConfiguration(): ClientConfiguration {
val config = ClientConfiguration.builder()
.connectedTo("localhost:9200")
.usingSsl()
.withDefaultHeaders(httpHeaders)
.withBasicAuth("admin", "admin")
.build()
return config
}
}
我正在尝试保存一个简单的实体:
val isIndexExists = opensearch.indexOps(Person::class.java).exists().awaitSingle()
if (!isIndexExists) {
opensearch.indexOps(Person::class.java).create().subscribe()
}
opensearch.save(Person(UUID.randomUUID().toString(), name))
.doOnNext(System.out::println)
.subscribe()
我收到以下错误:
org.springframework.dao.DataAccessResourceFailureException:状态: 200、[es/indices.exists] 缺少 [X-Elastic-Product] 标头。请 检查您是否正在连接到 Elasticsearch 实例,并且 任何网络过滤器都会保留该标头。嵌套异常 是 java.lang.RuntimeException:状态:200,[es/indices.exists] 缺少 [X-Elastic-Product] 标头。请检查您是否是 连接到 Elasticsearch 实例,并且任何网络 过滤器正在保留该标头。] 根本原因
我在文档中没有找到 spring-boot-starter-data-elasticsearch 是否支持 OpenSearch 的答案,所以我有一个问题 - 也许我错误地配置了与 OpenSearch 的连接?或者我需要使用 opensearch-rest-client 而不是 spring-boot-starter-data-elasticsearch ?
Spring Data Elasticsearch 是使用 Elasticsearch 客户端库针对 Elasticsearch 服务器构建的。
您可能想查看 spring-data-opensearch https://github.com/opensearch-project/spring-data-opensearch