Product tutorials, how-tos, and fully-documented APIs.

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"}]