为什么在具有特殊字符"+"的键上使用键过滤器进行 Riak 地图缩减不起作用?



我正试图在我的riak数据库上运行以下map/reduce查询:

curl -XPOST http://localhost:8098/mapred 
     -H 'Content-Type: application/json' 
     -d '{"inputs":{"bucket":"my_customers","key_filters":[["eq","sales+p3@dummy3.gr"]]},"query":[{"map":{"language":"javascript","source":"function(v) {var results = []; results.push(v); return results;}"}}]}' 

bucket my_customers包含关键字为sales+p3@dummy3.gr的值,但是从这个map/reduce查询返回的结果是一个空数组。

如果我将查询更改为使用关键字sales@dummy.gr搜索另一个值(该值也存在),它将毫无问题地返回结果。

我怀疑问题出在字符+上,它是关键的一部分。

提前谢谢。

通过列出存储桶中的密钥来检查密钥。我怀疑这里存在url编码问题,并且密钥实际上有一个空格而不是+

当您对HTTP API执行PUT/POST操作时,Riak端实际上对URL中的桶和密钥进行了urdecoded,并将+视为一个空间。当使用%2B/buckets/mybucket/keys/sales%2Bp3@dummy3.gr)对+进行PUT/POST时,您将需要对该密钥进行URL编码,如果您正在进行常规GET来检索它,也可以这样做。

相关内容

  • 没有找到相关文章

最新更新