I get you now, I was confused by the fact that he asked explicitly about 2i, so when you mentioned indexes I thought you were referring to 2i, I would categorize Riak Search and Yokozuna as an alternative due to extra effort, schema definition and post-commits hooks, so for the straight question he asked the answer would be no, the alternatives, those you mentioned.

Guido.

On 27/07/13 17:12, Jeremiah Peschka wrote:
No, I never said or hinted that you could join 2i indices using Riak Search.

You can, however, query against multiple indexed fields with Riak Search. Here's what that would look like in CorrugatedIron:

varreq=newRiakSearchRequest
{
Query=newRiakFluentSearch("riak_search_bucket","date")
};

req.Query.Search("2012-01-03")
.And("category", "sandwiches");

varresult=Client.Search(req);


This becomes a Riak Search query on the riak_search_bucket with the syntax date:2012-01-03 AND category:sandwiches

The trick with Riak Search is that the objects you're saving have to be readable by Riak Search. If you can't encode field names in a way that is expected by Search, you'll need to specify a search schema so that Riak Search knows which data types to index.

See Using Search[1] and Search Schema[2] for implementation details

[1]: http://docs.basho.com/riak/latest/dev/using/search/
[2]: http://docs.basho.com/riak/latest/dev/advanced/search-schema/

---
Jeremiah Peschka - Founder, Brent Ozar Unlimited
MCITP: SQL Server 2008, MVP
Cloudera Certified Developer for Apache Hadoop


On Sat, Jul 27, 2013 at 11:44 AM, Guido Medina <guido.med...@temetra.com <mailto:guido.med...@temetra.com>> wrote:

    Are you saying that you can join two 2i indexes? Let's say you
    have a 2i named "date" and another named "category" so you could
    get a list of modified objects on a date and for a specific
    category with Riak Search?

    Guido.


    On 27/07/13 16:32, Jeremiah Peschka wrote:
    Both Riak Search (currently) and Yokozuna (future) provide the
    ability to perform joins of multiple indices on the same bucket
    objects.

    I find it best to think of 2i as an extension of what Riak KV
    already does well - fast key based lookups.

    Search and Yokozuna provide complex query semantics.

    ---
    Jeremiah Peschka - Founder, Brent Ozar Unlimited
    MCITP: SQL Server 2008, MVP
    Cloudera Certified Developer for Apache Hadoop


    On Sat, Jul 27, 2013 at 11:16 AM, Guido Medina
    <guido.med...@temetra.com <mailto:guido.med...@temetra.com>> wrote:

        Rohman,

        I think the reason for this is that the cluster will have to
        do the whole intersection in memory, 2i only provides queries
        for 1 single index and then return that result to either the
        client streaming or not, intersection indeed will require a
        MapReduce job to get a hold of both lists and intersect it,
        honestly, I wish that was possible, I think that's why I'm
        learning Erlang at the moment, we all wanted "join" like
        functionality with 2i to be honest but I don't think that is
        going to happen before version 1.5 if ever.

        If you noticed, Riak 1.4 added 2i streaming which IMHO is
        like moving farer away from handling results in memory, if
        you get the point of what I mean. Join 2i queries in Riak
        will be an issue for a long time.

        HTH,

        Guido.


        On 27/07/13 14:20, Antonio Rohman Fernandez wrote:

            Hi there,

            I didn't fully check the new release notes yet, but I
            guess that Riak 1.4 doesn't have the ability to query
            multiple 2i at the same time... how difficult may be to
            implement a multiple 2i query via their intersecting
            items in their arrays? Maybe we could have this in future
            versions?

            I normally do this with scripts before doing a MapReduce,
            if the data I want to look for is having 2 indexes
            conditions, I get the array of items of each 2i query,
            then get only the items found on both arrays and use it
            as a MapReduce input list.

            However, done in my app's side is a bit costly as Riak
            needs to give me the full items arrays and then I need to
            process them to find repeated keys.

            I really wish for Riak to be able to query multiple 2i
            soon as it will help a lot.

            Merci,
            Rohman

            Sent from my iPhone
            _______________________________________________
            riak-users mailing list
            riak-users@lists.basho.com
            <mailto:riak-users@lists.basho.com>
            http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com



        _______________________________________________
        riak-users mailing list
        riak-users@lists.basho.com <mailto:riak-users@lists.basho.com>
        http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com




    _______________________________________________
    riak-users mailing list
    riak-users@lists.basho.com  <mailto:riak-users@lists.basho.com>
    http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


    _______________________________________________
    riak-users mailing list
    riak-users@lists.basho.com <mailto:riak-users@lists.basho.com>
    http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com



_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to