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

Riak: query array of 2i through Map Reduce

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

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

但我还没有找到任何支持。键没有特定顺序,所以我不认为我可以使用范围查询。

您当然可以使用 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 函数进行新开发。