java – Spring中的Elasticsearch HTTP身份验证
作者:互联网
我想访问受用户名和密码保护的远程elasticsearch. https://[username]:[password]@aws-eu-west-1-portal1.dblayer.com:11109/
在Spring中使用XML配置我能够访问我的localhost弹性,如下所示
<!-- ElasticSearch -->
<elasticsearch:repositories base-package="be.smartsearch.service.repository.elasticsearch" />
<elasticsearch:transport-client id="esClient" cluster-nodes="localhost:9300" />
<bean id="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor-arg name="client" ref="esClient" />
</bean>
到目前为止我找到的唯一有用的文档是PHP:https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_security.html
如何使用XML配置使用Spring数据中的凭据连接到远程elasticsearh?
更新1
在Mongo,我可以通过以下方法完成
<!-- Mongo -->
<mongo:mongo host="${mongo.host}" port="${mongo.port}"/>
<mongo:db-factory dbname="SmartSearchAfterDemo" mongo-ref="mongo" username="${mongo.user}" password="${mongo.password}"/>
<!--<mongo:db-factory dbname="${mongo.dbname}" mongo-ref="mongo"/> -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
<mongo:repositories base-package="be.smartsearch.service.repository.mongo"/>
解决方法:
Spring Data Elasticsearch基于使用二进制传输procol的官方Elasticsearch Java客户端(而不是像PHP这样的REST HTTP procol).
如果您使用Shield来保护您的Elasticsearch,那么您可以在Transport client / Transport procol上设置用户/密码
TransportClient client = TransportClient.builder()
.addPlugin(ShieldPlugin.class)
.settings(Settings.builder()
.put("cluster.name", "yourcluster")
.put("shield.user", "youruser:yourpassword")
...
.build())
如果您不想使用Java代码中的HTTP协议,那么社区客户端就会:
> Jest,支持HTTP authentication
> Elasticsearch HTTP这是非常新的
但是这些解决方案与Spring Data不兼容
标签:java,spring-data,elasticsearch,http-authentication,xml-configuration 来源: https://codeday.me/bug/20190628/1314260.html