【问题标题】:AWS Elasticsearch Failed to detect the Elasticsearch version. It gives 403 forbiddenAWS Elasticsearch 无法检测到 Elasticsearch 版本。它给出了 403 禁止
【发布时间】:2018-02-21 10:56:13
【问题描述】:

我将 AWS elasticsearch 与休眠和 Spring MVC 结合使用。在服务器启动时自动检测elasticsearch的版本,抛出以下异常

Failed to detect the Elasticsearch version running on the cluster.
at org.hibernate.search.elasticsearch.dialect.impl.DefaultElasticsearchDialectFactory.createDialect(DefaultElasticsearchDialectFactory.java:39) ~[hibernate-search-elasticsearch-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.elasticsearch.impl.DefaultElasticsearchService.start(DefaultElasticsearchService.java:100) ~[hibernate-search-elasticsearch-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager$ServiceWrapper.startService(StandardServiceManager.java:323) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager$ServiceWrapper.startVirtual(StandardServiceManager.java:288) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager.createAndCacheWrapper(StandardServiceManager.java:225) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.engine.service.impl.StandardServiceManager.requestService(StandardServiceManager.java:100) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.elasticsearch.impl.ElasticsearchIndexManager.initialize(ElasticsearchIndexManager.java:153) ~[hibernate-search-elasticsearch-5.9.0.Final.jar:5.9.0.Final]
at org.hibernate.search.indexes.impl.IndexManagerGroupHolder.doCreateIndexManager(IndexManagerGroupHolder.java:195) ~[hibernate-search-engine-5.9.0.Final.jar:5.9.0.Final]
Caused by: org.hibernate.search.exception.SearchException: HSEARCH400007: Elasticsearch request failed.
403 'Forbidden' with body
{
"message": "Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header."

请注意,如果我使用专用的弹性搜索服务器安装而不是 AWS 弹性搜索服务,则一切正常。

【问题讨论】:

    标签: hibernate spring-mvc elasticsearch hibernate-search


    【解决方案1】:

    您可能在 elasticsearch 配置中设置以下属性

    hibernate.search.default.elasticsearch.username hibernate.search.default.elasticsearch.password

    AWS elasticsearch 服务默认使用匿名用户,因此不需要用户名密码。如果你设置了这些属性(即使是空白值)休眠将尝试使用基本身份验证来验证请求,这将失败,因为其他必需的标头将丢失。所以在使用 AWS elasticsearch 服务时不要设置以上属性。

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多