使用密钥调用外部 elasticsearch 服务器

Calling external elasticsearch server with secret key

我正在尝试调用由 FacetFlow 托管的外部弹性搜索服务器。为了连接到这个,我得到了一个 url 和一个密钥,我已经在我的 application.yml

中设置了它
data:
        elasticsearch:
            cluster-name:
            cluster-nodes: mysupersecretkey:@name.west-eu.azr.facetflow.io:443

当我尝试 运行 我得到的应用程序 无法实例化 [org.elasticsearch.client.Client]:工厂方法 'elasticsearchClient' 抛出异常;嵌套异常是 java.lang.IllegalStateException: java.lang.NumberFormatException: 对于输入字符串: "@name.west-eu.azr.facetflow.io:443"

似乎spring-boot 将@ 之前的所有内容视为主机名,将@ 之后的所有内容视为端口号。

是否有更好的设置方法?

这是由于 Spring Data Elasticsearch class TransportClientFactoryBean 解析服务器 URL 的方式所致。那里的代码没有处理 URL 结构为 protocol://user:password@server:port/uri 的情况。因此,它最终将 https 解析为主机名(即协议),将 API 键解析为端口号(即用户)。

您可以向 Spring Data Elasticsearch project 提交问题以支持 Facetflow URLs。