【问题标题】:Calling external elasticsearch server with secret key使用密钥调用外部弹性搜索服务器
【发布时间】:2015-07-19 14:19:18
【问题描述】:

我正在尝试调用由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 将 @ 之前的所有内容视为主机名,将 @ 之后的所有内容视为端口号。

有没有更好的设置方法?

【问题讨论】:

  • 您能否提供有关发生此错误的工厂方法“elasticseachClient”的更多详细信息?集群节点是否也映射到字符串或 URL?

标签: elasticsearch spring-boot jhipster


【解决方案1】:

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

您可以向 Spring Data Elasticsearch project 提出问题以支持 Facetflow URL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多