Riak:通过Map Reduce查询2i数组

时间:2015-03-16 17:34:30

标签: mapreduce riak

我可以在Riak中的Map Reduce作业中查询二级索引数组,而不仅仅是一键吗?我想做这样的事情:

"inputs": {
    "bucket": myBycket,
        "index": "myIndex",
        "key": key + " OR " + key + " OR " + key
    },
    "query": [{
        "map": {
            "language":"javascript",
            "name":"Riak.mapValuesJson"
        }
    }]
}

但我没有找到任何支持。密钥没有特定的顺序,所以我不认为我可以使用远程查询。

1 个答案:

答案 0 :(得分:1)

你当然可以使用Map Reduce处理这个问题。如果您预先指定目标键,则可以限制范围并可能提高性能。

{
 "inputs": {
    "bucket": myBycket,
    "index": "myIndex",
    "start": firstkey,
    "end": lastkey
    },
    "query": [{
        "map": {
            "language":"javascript",
            "source":"function(v) {
                        if (v.key == "key1" || v.key == "key2") {
                           return [<<put what you want returned here>>]
                        } else {
                           return []
                        }
                      }"
        }
    }]
}

您应该注意到,根据docs site javascript Map Reduce已被正式弃用,因此您可能希望使用Erlang函数进行新开发。