如何将参数发送到地图减少查询

时间:2012-12-20 10:22:06

标签: erlang mapreduce riak

我正在为Riak在erlang中编写mapreduce查询,我想通过Ubuntu终端上的curl使用HTTP API将参数传递给Riak。查询的输入是2i查询,但我想要一个参数来允许进一步过滤。我认为选项是关键字,因为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"]

参数的格式是什么?

1 个答案:

答案 0 :(得分:2)

我在Erlang中开发了set of configurable utility functions for Riak mapreduce。由于我希望能够指定critera集,我决定允许用户将配置作为JSON文档传递,因为这适用于所有客户端类型,尽管其他文本表示也应该有效。有关如何从curl使用这些函数的示例,请参见README.markdown文件。

您可以通过'arg'参数将参数传递给每个单独的地图或减少阶段功能。无论您在此处指定什么,都将作为最终参数传递给地图或减少阶段,请参阅下面的示例:

"query":[{"map":{"language":"erlang","module":"riak_mapreduce_utils",
                 "function":"map_link","keep":false,
                 "arg":"{\"bucket\":\"master\"}"}},