我想访问受用户名和密码保护的远程elasticsearch。https://[用户名]:[密码]@aws-eu-west-1-portal1.dblayer.com:11109/
在 Spring 中,使用 XML 配置我能够访问我的本地主机弹性,如下所示
<!-- 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
如何使用 Spring 数据中的凭据和 XML 配置连接到远程 Elasticsearch?
UPDATE 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 基于官方 Elasticsearch Java 客户端,该客户端使用二进制传输协议(而不是像 PHP 那样的 REST HTTP 协议)。
如果您使用 Shield 来保护 Elasticsearch,那么您可以在传输客户端/传输协议上设置用户/密码
TransportClient client = TransportClient.builder()
.addPlugin(ShieldPlugin.class)
.settings(Settings.builder()
.put("cluster.name", "yourcluster")
.put("shield.user", "youruser:yourpassword")
...
.build())
如果您不想在 Java 代码中使用 HTTP 协议,那么可以使用社区客户端:
-
Jest它支持HTTP认证
-
弹性搜索 HTTP这是相当新的
但这些解决方案与 Spring Data 不兼容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)