riak search and basic write operations

Brian Roach roach at basho.com
Wed Oct 3 19:55:55 EDT 2012


The problem you are having has nothing to do with the Java client;
the '#' character is a reserved character in an URL. It needs to be
URL encoded or it's interpreted as a fragment/anchor indicator.

http://en.wikipedia.org/wiki/Percent-encoding

In an URL you just need to replace it with %23


On Wed, Oct 3, 2012 at 4:24 PM, kamiseq <kamiseq at gmail.com> wrote:
> I found out why I couldn't read objects via rest client. my key
> contained # and it was probably mapped to different char by pbclient,
> when replaced # with _ everything works fine.
>
> how can I force charset using pbclient, what is the default?
>
> pozdrawiam
> Paweł Kamiński
>
> kamiseq at gmail.com
> pkaminski.prv at gmail.com
> ______________________
>
>
> On 3 October 2012 18:24, kamiseq <kamiseq at gmail.com> wrote:
>> ok,
>> I admit that somehow I didn't catch at first that example shows second
>> index usage - so thanks for pointing this out.
>>
>> what about questions 1,4,5??
>>
>> pozdrawiam
>> Paweł Kamiński
>>
>> kamiseq at gmail.com
>> pkaminski.prv at gmail.com
>> ______________________
>>
>>
>> On 3 October 2012 00:24, Brian Roach <roach at basho.com> wrote:
>>> Greetings!
>>>
>>> First and foremost, search and secondary indexes (2i) are not the same thing.
>>>
>>> You need to enable 2i and use the ELevelDB backend as described here:
>>> http://wiki.basho.com/Secondary-Indexes---Configuration-and-Examples.html
>>>
>>> Secondly, the default Converter (JSONConverter) in the Java client
>>> does support serializing/deserializing of secondary indexes. The page
>>> you link to in the cookbook is demonstrating how to write your own
>>> custom converter (for something other than JSON), and its first
>>> example does not support them.
>>>
>>> Enable 2i in Riak, annotate your POJO as you have, and use the default
>>> Converter and you should be fine; nothing else is needed.
>>>
>>> On Tue, Oct 2, 2012 at 4:03 PM, kamiseq <kamiseq at gmail.com> wrote:
>>>> hej I am a bit confused about search functionality and basic
>>>> read/write operations.
>>>>
>>>> Im using recent (1.0.6) java client and pb cluster riak client. just
>>>> for testing Im only using two local machines joined into one cluster.
>>>> storing and reading objects works fine  with key(let say I have users
>>>> bucket and I generate id from timestamp).
>>>>
>>>> but
>>>> 1. I cannot fetch objects using rest client in firefox after I store
>>>> objects using java client (I ll check with curl) but I can query for
>>>> keys in bucket (http://192.168.0.121:8098/riak/users/?keys=true&props=false).
>>>> 2. I followed https://github.com/basho/riak-java-client/wiki/Using-a-custom-Converter
>>>> and I annotated one of the field with @RiakIndex(name = "user_email")
>>>> and now I tried to look-up this object with email but I got
>>>> Caused by: com.basho.riak.client.RiakException: java.io.IOException:
>>>> {"phase":"index","error":"{indexes_not_supported,riak_kv_bitcask_backend}","input":"{cover,[{1370157784997721485815954530671515330927436759040,[1370157784997721485815954530671515330927436759040]}],{<<\"users\">>,{eq,<<\"user_email_bin\">>,<<\"js at gm.com1\">>}}}","type":"result","stack":"[]"}
>>>>     at com.basho.riak.client.query.MapReduce.execute(MapReduce.java:80)
>>>>     at com.basho.riak.client.raw.pbc.PBClientAdapter.fetchIndex(PBClientAdapter.java:436)
>>>>
>>>> I ve google a bit and all I could find was this
>>>> http://lists.basho.com/pipermail/riak-users_lists.basho.com/2011-September/005749.html
>>>> post a year old now. which points out that search needs to be enabled
>>>> in app.config file. I changed settings and restarted both machines.
>>>> but I keep getting same exception every time.
>>>> 3. in same https://github.com/basho/riak-java-client/wiki/Using-a-custom-Converter
>>>> tutorial I read that default converter is not marshalling indexes,
>>>> links and metadata and it shows how to get and restore those
>>>> information back but looking into code for default converter
>>>> implementation I could find the same lines of code as in the article
>>>>
>>>> Map<String, String> usermetaData =
>>>> usermetaConverter.getUsermetaData(domainObject);
>>>>         RiakIndexes indexes = riakIndexConverter.getIndexes(domainObject);
>>>>         Collection<RiakLink> links = riakLinksConverter.getLinks(domainObject);
>>>>
>>>>         return RiakObjectBuilder.newBuilder(bucket, key)
>>>>             .withValue(value)
>>>>             .withVClock(vclock)
>>>>             .withUsermeta(usermetaData)
>>>>             .withIndexes(indexes)
>>>>             .withLinks(links)
>>>>             .withContentType(Constants.CTYPE_OCTET_STREAM)
>>>>             .build();
>>>> 4. can I specify data encoding it seems that it is not UTF-8
>>>> 5. I also saw in app.config that vnode_vclocks is set to true, so
>>>> should I still set clientId on riak client?? I read it will be skipped
>>>> anyway now.
>>>>
>>>> thanks for any comments
>>>>
>>>> pozdrawiam
>>>> Paweł Kamiński
>>>>
>>>> kamiseq at gmail.com
>>>> pkaminski.prv at gmail.com
>>>> ______________________
>>>>
>>>> _______________________________________________
>>>> riak-users mailing list
>>>> riak-users at lists.basho.com
>>>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com




More information about the riak-users mailing list