HTTP MapReduce

MapReduce is a generic way to query Riak by specifying inputs and constructing a set of map, reduce, and link phases through which data will flow.

Request

POST /mapred

Important headers: * Content-Type - must always be application/json. The format of the request body is described in detail on the MapReduce page.

Optional query parameters: * chunked - when set to true, results will be returned as they are received in multipart/mixed format using chunked-encoding.

+This request must include an entity (body), which is the JSON form of the MapReduce query.+

Response

Normal status codes: * 200 OK

Typical error codes: * 400 Bad Request - if an invalid job is submitted. * 500 Internal Server Error - if there was an error in processing a map or reduce function * 503 Service Unavailable - if the job timed out before it could complete

Important headers: * Content-Type - application/json when chunked is not true, otherwise multipart/mixed with application/json sections.

Example

$ curl -v -d '{"inputs":"test", "query":[{"link":{"bucket":"test"}},{"map":{"language":"javascript","name":"Riak.mapValuesJson"}}]}' -H "Content-Type: application/json" http://127.0.0.1:8098/mapred
* About to connect() to 127.0.0.1 port 8098 (#0)
*   Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 8098 (#0)
> POST /mapred HTTP/1.1
> User-Agent: curl/7.19.4 (universal-apple-darwin10.0) libcurl/7.19.4 OpenSSL/0.9.8l zlib/1.2.3
> Host: 127.0.0.1:8098
> Accept: */*
> Content-Type: application/json
> Content-Length: 117
>
< HTTP/1.1 200 OK
< Server: MochiWeb/1.1 WebMachine/1.9.0 (participate in the frantic)
< Date: Fri, 30 Sep 2011 15:24:35 GMT
< Content-Type: application/json
< Content-Length: 30
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
[{"foo":"bar"},{"riak":"CAP"}]