Fwd: Can't find docs/tutorial on secondary indexes for riak-erlang-client

Buri Arslon buriwoy at gmail.com
Mon Mar 12 01:48:07 EDT 2012


---------- Forwarded message ----------
From: Buri Arslon <buriwoy at gmail.com>
Date: Sun, Mar 11, 2012 at 11:47 PM
Subject: Re: Can't find docs/tutorial on secondary indexes for
riak-erlang-client
To: Mark Phillips <mark at basho.com>


No problem, Mark. I've submitted a new issue.
https://github.com/basho/riak_wiki/issues/265

By the way, thanks for the awesome Riak!
-- buriwoy


On Sun, Mar 11, 2012 at 11:26 PM, Mark Phillips <mark at basho.com> wrote:

> Hi Buriwoy,
>
> Sorry for the hassle with the docs. Good to hear you're up and running. I
> scanned the thread really quickly and it didn't look like you mentioned
>
> http://wiki.basho.com/Secondary-Indexes.html
>
> Assuming you've seen them, can you take 15 minutes and put together your
> thoughts on how to improve them in a wiki issue [1]. It shouldn't take
> anyone nearly this long to get up and running with any component of Riak.
> Our fault. Appreciate your help with fixing it.
>
> Mark
>
> 1 - https://github.com/basho/riak_wiki/issues/new
>
> On Mar 11, 2012, at 18:48, Buri Arslon <buriwoy at gmail.com> wrote:
>
> After several hours of searching, trying, getting errors ... finally I was
> able to insert secondary index with riak-erlang-client. Here is the code
> which I successfully ran:
>
>       %% Set some vars
>    {Bucket, Key, Index} = {<<"test_users">>, <<"aldarkusa">>, [{"qayerda_bin",
> "Qozoqta"}]}.
>
>    %% Connect to riak
>    {ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087).
>
>    %% Create a new riak object
>    Obj = riakc_obj:new(Bucket, Key, <<"Yomonlarni aldap yurgan
> Aldarkusa">>).
>
>    %% Create a new metadata with secondary index
>    Meta = dict:store(<<"index">>, Index, dict:new()).
>
>    %% Update the object we've created before
>    NewObj = riakc_obj:update_metadata(Obj, Meta).
>
>    %% Finally, put/insert the updated new object
>    riakc_pb_socket:put(Pid, NewObj).
>
>
> I think Basho should update/improve the documentation. Examples in Links
> page (http://wiki.basho.com/Links.html) gave me some clues how to update
> metadata but the examples themselves were outdated.
>
> Another idea is to allow users to post their examples (community content).
>
> Regards,
> -- Buriwoy
>
> On Sun, Mar 11, 2012 at 4:14 PM, Buri Arslon <buriwoy at gmail.com> wrote:
>
>> I have some clue how to add secondary index but data types are confusing
>> for me:
>>
>>   > ObjNew = riakc_obj:new(<<"test_users">>, <<"adm">>, <<"My value">>).
>>   > Index = [ <<"field1_bin">>, <<"my_index">>].
>>   > Meta = dict:store(<<"index">>, Index, dict:new()).
>>   > ObjNewMeta = riakc_obj:update_metadata(ObjNew, Meta).
>>   > riakc_pb_socket:put(Pid, ObjNewMeta).
>>      ** exception exit: {noproc,
>>                        {gen_server,call,
>>                            [<0.124.0>,
>>                             {req,
>>
>> {rpbputreq,<<"test_users">>,<<"adm">>,undefined,
>>                                     {rpbcontent,<<"My
>> value">>,undefined,undefined,
>>
>> undefined,undefined,undefined,undefined,undefined,undefined,
>>                                         [{rpbpair,<<"field"...>>,[...]}]},
>>
>> undefined,undefined,undefined,undefined,undefined,undefined,
>>                                     undefined},
>>                                 60000},
>>                             infinity]}}
>>       in function  gen_server:call/3 (gen_server.erl, line 188)
>>
>> So, I don't know what the problem is. I can only guess that index data
>> type may not be correct, but it's just guess.
>>
>> Any ideas?
>> -- Buriwoy
>>
>> On Sun, Mar 11, 2012 at 1:05 PM, Buri Arslon <buriwoy at gmail.com> wrote:
>>
>>> Thanks for your reply Jeremiah!
>>>
>>> I guess I am "greener" than you :)
>>>
>>> Before posting to the list, I looked through riak documentation, the
>>> list. I did find some postings on the subject but almost all of'em were
>>> questions than answers. The answers I could find were so ambiguous that I
>>> wasn't able to use them.
>>>
>>> I've tried riakc_obj:update_metadata but got this error:
>>> http://dpaste.com/715011/
>>>
>>> So, I hoped to find a working example. I'm too new to Erlang to read the
>>> source and solve my problems.
>>>
>>> Thanks again,
>>> -- Buriwoy
>>>
>>>
>>> On Sun, Mar 11, 2012 at 12:46 PM, Jeremiah Peschka <
>>> jeremiah.peschka at gmail.com> wrote:
>>>
>>>> Howdy Buri,
>>>>
>>>> I'm not an Erlang expert, or even something remotely resembling
>>>> competent with Erlang, however, I believe I have tracked down what you're
>>>> looking for.
>>>>
>>>> You can use one of the riakc_pb_socket:get_index functions to pull back
>>>> data from an index. If you look at the source on the methods, you'll see
>>>> that they're just wrappers around a MapReduce call. As far as setting the
>>>> values... I think you'll have to make a call to riakc_obj:update_metadata
>>>> and add the index metadata in by hand, but I could be wrong on that one.
>>>>
>>>> If I'm wrong, hopefully someone on the list will correct my Erlang-y
>>>> ignorance.
>>>>
>>>> get_index/4 [1]
>>>> get_index/5 [3]
>>>> get_index/6 [2]
>>>> get_index/7 [4]
>>>>
>>>>
>>>>
>>>> [1]:
>>>> https://github.com/basho/riak-erlang-client/blob/master/src/riakc_pb_socket.erl#L677
>>>> [2]:
>>>> https://github.com/basho/riak-erlang-client/blob/master/src/riakc_pb_socket.erl#L695
>>>> [3]:
>>>> https://github.com/basho/riak-erlang-client/blob/master/src/riakc_pb_socket.erl#L714
>>>> [4]:
>>>> https://github.com/basho/riak-erlang-client/blob/master/src/riakc_pb_socket.erl#L732
>>>> ---
>>>> Jeremiah Peschka - Managing Director, Brent Ozar PLF, LLC
>>>> Microsoft SQL Server MVP
>>>>
>>>> On Mar 11, 2012, at 11:06 AM, Buri Arslon wrote:
>>>>
>>>> > Hi everybody,
>>>> >
>>>> > I can't find any tutorial or docs on secondary indexes. Here (
>>>> http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-October/005952.html)
>>>> it was stated that the docs would be updated but I can't find it.
>>>> >
>>>> > I just wanted a doc which explains how to use secondary indexes with
>>>> native erlang client. Riak docs have examples for http api but not for
>>>> erlang client.
>>>> >
>>>> > Can anyone refer me to appropriate docs/tutorials?
>>>> >
>>>> > Thanks,
>>>> > -- Buriwoy
>>>> > _______________________________________________
>>>> > riak-users mailing list
>>>> > riak-users at lists.basho.com
>>>> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>>>
>>>>
>>>
>>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20120311/7caf8806/attachment.html>


More information about the riak-users mailing list