使用 spring-boot-starter-data-elasticsearch 时与 OpenSearch 集成时出错

问题描述 投票:0回答:1

我有一个具有以下配置的测试项目:

  • 春季启动2.7.18
  • spring-boot-starter-data-elasticsearch
  • 开放搜索2.6.0

与 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 opensearch
1个回答
0
投票

Spring Data Elasticsearch 是使用 Elasticsearch 客户端库针对 Elasticsearch 服务器构建的。

您可能想查看 spring-data-opensearch https://github.com/opensearch-project/spring-data-opensearch

© www.soinside.com 2019 - 2024. All rights reserved.