我正在尝试调用由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在@作为主机名之前看到所有内容,在@之后看到所有内容作为端口号。
有没有更好的方法来设置它?
答案 0 :(得分:1)
这是由于Spring Data Elasticsearch类TransportClientFactoryBean解析服务器URL的方式。其中的代码不处理URL结构为protocol://user:password@server:port/uri
的情况。因此,它最终将https
解析为主机名(即协议),将API密钥解析为端口号(即用户)。
您可以向Spring Data Elasticsearch project提交问题以支持Facetflow网址。