Mapreduce 为什么Riak map在具有特殊字符的键上使用键过滤器减少+&引用;不起作用?

Mapreduce 为什么Riak map在具有特殊字符的键上使用键过滤器减少+&引用;不起作用?,mapreduce,riak,Mapreduce,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",

我正在尝试在我的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
myu customers
包含键为sales的值+p3@dummy3.gr但是从这个map/reduce查询返回的结果是一个空数组

如果我将查询更改为使用key
sales@dummy.gr
,它也存在,它会毫无问题地返回结果

我怀疑问题出在作为键的一部分的字符
+


提前谢谢。

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


当您对HTTP API执行PUT/POST操作时,Riak端实际上会对bucket进行URL解码并输入URL,并将
+
视为一个空格。当使用
%2B
/bucket/mybucket/keys/sales%)放置/发布该密钥时,您需要对
+
进行URL编码2Bp3@dummy3.gr
)如果您正在执行常规获取来检索它,请执行相同的操作。

通过列出存储桶中的密钥来检查您的密钥。我怀疑这里有url编码问题,而且密钥实际上有一个空格。aaaaah…你说得对!!!!所以,我以为是带加号的钥匙,而是放在桶里,有一个空格!非常有用的答案。现在,我需要找出如何存储带有加号的钥匙。但是,请注意,您的回答是正确的,并且回答了我的问题:为什么查询没有结果。请将其作为正式答案发布,以便我可以接受。完成后,它还应回答您的第二个问题:)