Spring中的Elasticsearch HTTP认证

我想访问受用户名和密码保护的远程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

如何使用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基于官方的Elasticsearch

Java客户端,该客户端使用二进制Transport协议(而不是像PHP那样的REST HTTP协议)。

如果您使用Shield保护Elasticsearch,则可以在Transport客户端/ Transport协议上设置用户/密码

TransportClient client = TransportClient.builder()

.addPlugin(ShieldPlugin.class)

.settings(Settings.builder()

.put("cluster.name", "yourcluster")

.put("shield.user", "youruser:yourpassword")

...

.build())

如果您不想使用Java代码中的HTTP协议,则可以使用社区客户端:

  • 支持HTTP认证的Jest
  • Elasticsearch HTTP这是很新的

但是这些解决方案与Spring Data不兼容

以上是 Spring中的Elasticsearch HTTP认证 的全部内容, 来源链接: utcz.com/qa/414170.html

回到顶部