【发布时间】:2019-12-31 19:13:29
【问题描述】:
我正在开发一个涉及模糊搜索的新项目,因此我正在使用 spring boot (v2.1.5) 开发 elasticsearch (v6.4.3)。我无法在 spring boot 和 elasticsearch 之间建立连接,因为我必须将用户名、密码、ca_certificate_base64 从 spring boot 传递到 elasticsearch 才能建立连接。您能否让我知道如何建立连接以及什么弹性搜索客户端是正确的选项?示例或链接会有所帮助。
在本地(我的笔记本电脑),我确实安装了 elasticsearch 6 和 spring boot 2.1.5。我能够建立连接(使用弹簧数据),因为不需要“https”连接或传递用户名和密码,因为互联网上的大多数示例都在谈论 localhost:9200。
public Client client() {
Settings elasticsearchSettings = Settings.builder()
.put("client.transport.sniff", true)
.put("uri", "https://usertemp:ABCSAD@alp-usba-north-3-portal.11.db2lay.com:32117/")
.put("uri_direct_1", "https://usertemp:ABCSAD@alp-usba-north-3-portal.11.db2lay.com:32117/")
.put("cluster.name", clusterName).build();
TransportClient client = new PreBuiltTransportClient(elasticsearchSettings);
}
I also tried to update application.properties file
'''
spring.data.elasticsearch.cluster-name=ee842f-93042
spring.data.elasticsearch.cluster-nodes=alp-usba-north-3-portal.11.db2lay.com:32117
spring.data.elasticsearch.properties.username=usertemp
spring.data.elasticsearch.properties.password=ABCSAD
spring.data.elasticsearch.properties.ca_certificate_base64=SUZJQ0FURS0tLS0tCk1JSURvekNDQW91Z0F3SUJBZ0lFWFA5Sjl6QU5CZ2
我期待与 spring boot 和 elasticsearch 的联系。但是,当我启动应用程序服务器时出现以下错误。
引起:org.springframework.beans.BeanInstantiationException:无法实例化[org.elasticsearch.client.transport.TransportClient]:工厂方法'elasticsearchClient'抛出异常;嵌套异常是 java.lang.IllegalArgumentException: unknown setting [password] 请检查是否安装了任何必需的插件,或检查破坏性更改文档以获取已删除的设置 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.7.RELEASE.jar:5.1.7.RELEASE] 在 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.7.RELEASE.jar:5.1.7.RELEASE] ...省略了96个常用框架 引起:java.lang.IllegalArgumentException: unknown setting [password] 请检查是否安装了任何必需的插件,或检查破坏性更改文档以了解已删除的设置 在 org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:393) ~[elasticsearch-6.4.3.jar:6.4.3]【问题讨论】:
-
您配置的 TransportClient 使用原生协议(不是 HTTP/HTTP),并且通常在端口 9300 上运行。HTTP(S) 用于使用 REST 客户端访问集群时,通常使用端口 9200。因此请检查您是否使用了正确的客户端以及您的服务器是如何设置的。
-
@Meisch,谢谢,是的,我确实检查了云环境(compose for elasticsearch)服务,在那里我找到了凭证和证书信息。现在,我需要将 Spring Boot 应用程序中的凭据和证书传递给 elasticsearch 以获取连接和进一步通信。 您能否让我知道哪个客户端是正确的选择,因为我对 Spring Boot 数据和 Elasticsearch 都是新手? 他们提供了一个关于如何使用 Node JS 连接到弹性搜索的示例。 github.com/IBM-Cloud/compose-elasticsearch-helloworld-nodejs/…
-
从未与 IBM Compse for Elastic 合作过,他们网站上的文档几乎不存在。查看 Javascript 示例,您似乎需要使用客户端证书来访问它,而不是用户/密码。我会尝试是否可以在本地设置类似的东西来测试如何连接
-
顺便说一句,您使用哪个 ES 版本?您的问题主题提到 6.6,但在帖子中您谈论的是 6.4.3 - 并且一直在考虑用户/密码:您可能需要 ES 和连接证书
-
@Meisch,云上的 ES 版本是 6.6.2。在我的本地,我尝试使用 Spring boot 2.1.5 附带的 ES 6.4.3。提前致谢。
标签: java spring-boot elasticsearch spring-data-elasticsearch