我已经将我的Springboot版本升级到了2.7.8,将spring-data-elasticsearch版本升级到了4.4.7,将org.elasticsearch --- elasticsearch版本升级到了7.17.3
下面是我的pom.xml中的依赖项
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath />
</parent>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>4.4.7</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.17.3</version>
</dependency>
此兼容性矩阵来自官方文档:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions
我的AWS Elasticsearch示例版本是6.2,为了测试,我还创建了另一个版本为7.10的示例。
问题是我无法与6.2或7.10版本的任何AWS Elasticsearch示例建立连接。
它失败了,并出现错误:
Invalid or missing build flavor [oss]; nested exception is ElasticsearchException[Invalid or missing build flavor [oss]]
还想澄清一个疑问,在application.properties:
spring.elasticsearch.uris = [AWS-Instance-URL]
我们必须在URL的末尾附加任何端口号吗?[AWS-Instance-URL:?
因为如果我没有提供任何端口号,它会自动配置为-1端口
Failed to instantiate [org.springframework.data.elasticsearch.client.ClientConfiguration]: Factory method 'clientConfiguration' threw exception; nested exception is java.lang.IllegalArgumentException: Port number out of range: AWS-Instance_URL:-1
请有人对此提供一些见解,并在当前配置中说明如何与AWS Elasticsearch建立连接?
谢谢大家!
1条答案
按热度按时间gkl3eglg1#
如果我没记错的话,你看到的错误来自Elasticsearch在7.10版本的客户端中引入的更改。检查https://stackoverflow.com/a/74441976/4393565和https://github.com/elastic/elasticsearch/issues/76091。他们在客户端代码中添加了一些许可证检查。你在SO上找到了很多关于这个主题的问题(https://stackoverflow.com/search?q=Invalid+or+missing+build+flavor+oss)。
Spring Data Elasticsearch是用Elasticsearch的官方版本构建和测试的,我不知道AWS Elasticsearch是否在7.17中可用,以及客户端库是否也检查构建风格。
AWS在更改的时候创建了Elasticsearch的Opensearch变体,并且有一个构建在Spring Data Elasticsearch上的https://github.com/opensearch-project/spring-data-opensearch项目(不是由我维护的),但我也不知道这是否适用于您的服务器版本。
顺便说一句:您正在升级到一个版本,是维护。