Elasticsearch :: Model.search或法拉第向我的URL添加额外的斜杠,导致AWS“签名不匹配”错误

问题描述

我正在Rails应用程序中使用这些常见的宝石来搜索AWS上托管的Elasticsearch:

gem 'elasticsearch-model','=7.1.0'
gem 'elasticsearch-rails','=7.1.0'
gem 'faraday_middleware-aws-sigv4','= 0.3.0'

搜索诸如Topic.search(query)之类的单个模型时,一切工作都很好,但是在使用多模型搜索功能Elasticsearch::Model.search(query,[Topic])时,我得到了AWS认证错误。我打开了其他日志记录和跟踪,并看到发生了错误,因为由于某些原因,多模型搜索向URL添加了额外的斜杠/字符,这导致AWS拒绝了错误代码为403的请求:

我有一个Topic模型,该模型可以正确索引和搜索,这就是Rails控制台中发生的情况:

以下内容可以很好地工作:

Topic.search(query).results.to_a.map(&:to_hash)

> GET https://search-abc123.us-east-1.es.amazonaws.com:443/topics/_search [status:200,request:0.415s,query:0.039s]

但是以这种方式使用搜索topics//之后添加双斜杠

Elasticsearch::Model.search(query,[Topic]).results.to_a.map(&:to_hash)

> GET https://search-abc123.us-east-1.es.amazonaws.com:443/topics//_search [status:403,request:0.400s,query:N/A]

{"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."}

除了Elasticsearch::Model.search()以外,还可以搜索多个模型吗?或者有什么想法吗?我的AWS凭证很好,因为我可以索引,导入文档和搜索单个模型。问题是当我尝试使用多重搜索功能时会在网址中添加多余的斜杠

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...