Afaikは、HTTPAPIを介してこれを行うことはできません。
$key
Christianが述べたように、範囲クエリを使用できますが、インデックスフィールドとして参照できる主キーインデックスがすでにあるため、代替インデックスは必要ありません。
olav@nyx ~ (master *%) » curl http://nyx:8098/riak/test/20120931 -d "31. Sep 2012"
olav@nyx ~ (master *%) » curl http://nyx:8098/riak/test/20121002 -d "02. Oct 2012"
olav@nyx ~ (master *%) » curl http://nyx:8098/riak/test/20121021 -d "21. Oct 2012
olav@nyx ~ (master *%) » curl http://nyx:8098/riak/test/20121102 -d "The future"
olav@nyx ~ (master *%) » curl -X POST -H "content-type: application/json" \
-d @- http://localhost:8098/mapred \
<<EOF
{ "inputs":{
"bucket":"test"
, "index":"\$key"
, "start":"20121001"
, "end":"20121101"
}
, "query":[{
"reduce":{
"language":"erlang"
, "module":"riak_kv_mapreduce"
, "function":"reduce_identity"
, "keep":true
}
}]
}
EOF
# ...
[["test","20121021"],["test","20121002"]]
本当にキーフィルターが必要な場合は、Erlang pbクライアントを使用して、これらの行に沿って何かを行うことができます(コードパスで必要riak_kv
です)。
{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087),
Index = {index, <<"test1">>, <<"field_int">>, <<"123">>},
{ok, Filter} = riak_kv_mapred_filters:build_filter([[<<"ends_with">>,"1"]]).
MapReduce = [
{ reduce
, {qfun, fun(X, F) -> lists:filter(fun({A, B}) -> F(B) end, X) end}
, riak_kv_mapred_filters:compose(Filter)
, true}],
riakc_pb_socket:mapred(Pid, Index, MapReduce).