3

我正在用 erlang 为 Riak 编写 mapreduce 查询,我想通过 Ubuntu 终端上的 curl 使用 HTTP API 将参数传递给 Riak。查询的输入是一个 2i 查询,但我想要一个允许进一步过滤的参数。我认为 options 是关键字,因为我将在生产中使用 python 客户端,但它不方便校对我的 Erlang,而且它是我团队中一直使用的关键字。

这就是我正在尝试的:

curl -X POST http://riakhost:port/mapred -H 'Content-Type: application/json' -d '{
    "inputs": {
        "bucket":"mybucket",
        "index":"field1_bin",
        "key":"val3"
    },
    "options": "test",
    "query": [
        {"map": {"language": "erlang", 
         "module": "mapreduce", 
         "function":"map"
        }},
    ]}'

在我看到的三个记录集上:

["none", "none", "none"]

但我想要:

["test", "test", "test"]

参数的格式是什么?

4

1 回答 1

2

我在 Erlang 中为 Riak mapreduce 开发了一组可配置的实用函数。由于我希望能够指定一组标准,我决定允许用户将配置作为 JSON 文档传递,因为这适用于所有客户端类型,尽管其他文本表示也应该适用。README.markdown 文件中提供了如何从 curl 中使用这些函数的示例。

您可以通过“arg”参数将参数传递给每个单独的映射或减少阶段函数。您在此处指定的任何内容都将作为最终参数传递给 map 或 reduce 阶段,请参见下面的示例:

"query":[{"map":{"language":"erlang","module":"riak_mapreduce_utils",
                 "function":"map_link","keep":false,
                 "arg":"{\"bucket\":\"master\"}"}},
于 2012-12-20T14:49:59.350 回答