当前位置: 首页 > 面试题库 >

Spring中的Elasticsearch HTTP认证

章绪
2023-03-14
问题内容

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



 类似资料:
  • 我将elasticsearch容器的ip地址放入elasticsearch_url/中,并尝试使用elasticsearch_url:http://localhost:9200但我也得到了同样的警告:我知道:我可以访问kibana的仪表盘,当我卷曲“http:/IP\u addres\u of_the_container\u elk:9200” 这是我的docker compose: 谁能帮忙吗?

  • 我正在使用 spring security 3.2.0 和 spring framework 4.x 编写一个简单的 Web 应用程序。我可以看到用户名/通行证在自定义身份验证提供程序中通过,但实际身份验证尚未完成;也就是说,当输入错误的密码时,我仍然会被带到后登录网址/仪表板... web.xml spring-安全-配置. xml 除了委派给用户服务之外,自定义身份验证提供程序不执行任何操作:

  • 问题内容: 在我的应用程序中,我有用和注释的bean 。您可能会猜到:)第一个用于连接到生产数据库的bean,第二个注释使用伪造的DB(或其他)的bean,以加快开发速度。 我想要的是默认配置文件(),如果未被“ something-else ” 覆盖,它将始终使用。 完美将是在我的: 然后用覆盖它,这样我就可以做到: 但是可悲的是这是行不通的。知道我怎么能做到吗?我无法在所有环境上进行设置。 问

  • 在我的应用程序中,我有用和注释的bean。第一个,你可以猜到:),用于连接到生产数据库的bean,第二个注释使用一些假数据库(或其他任何东西)的bean,以使开发更快。 我想要的是默认配置文件(),如果它不被"某物"覆盖,它将始终使用。 在我的: 然后用覆盖它,这样我就可以: 但可悲的是,这是行不通的。你知道我怎么能做到吗?设置在我的所有环境中都不是一个选项。

  • 我有一个Spring Boot项目,并运行与Kafka正在实施。 我配置了一个生成器,并发送了一条主题为“demo”的消息。 但我没有设置任何属性,如 bootstrap.servers=[localhost:9092] value.serializer=class org.apache.kafka.common.serialization.StringSerializer ,这些属性通常在运行k

  • 最后,我实现了UserDetailsService接口