Riak Search Issue

Eric Redmond eredmond at basho.com
Mon Aug 18 17:10:01 EDT 2014


Alex,

You may have discovered a legitimate bug in the python driver. In the meantime, if you give your bucket and index the same name, you can proceed, while we investigate.

Thanks,
Eric


On Aug 18, 2014, at 2:00 PM, Alex De la rosa <alex.rosa.box at gmail.com> wrote:

> Yes, I did it in purpose, because I did so many testings that I wanted to start fresh... so I kinda translated the documentation, but that is irrelevant to the case.
> 
> Thanks,
> Alex
> 
> 
> On Mon, Aug 18, 2014 at 10:59 PM, Eric Redmond <eredmond at basho.com> wrote:
> Your steps seemed to have named the index "famoso".
> 
> Eric
> 
> 
> On Aug 18, 2014, at 1:56 PM, Alex De la rosa <alex.rosa.box at gmail.com> wrote:
> 
>> Ok, I found the first error in the documentation, parameters are in reverse order:
>> 
>> bucket = client.bucket('animals', 'cats')
>> 
>> should be:
>> 
>> bucket = client.bucket('cats', 'animals')
>> 
>> Now I could save and it found the bucket type: bucket = client.bucket('fcb','futbolistas') VS bucket = client.bucket('futbolistas', 'fcb')
>> 
>> However, even fixing that, the next step fails as it was failing before:
>> 
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> PYTHON:
>>   bucket = client.bucket('fcb','futbolistas')
>>   results = bucket.search('name_s:Lion*')
>>   print results
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> Traceback (most recent call last):
>>   File "x.py", line 13, in <module>
>>     results = bucket.search('name_s:Lion*')
>>   File "/usr/local/lib/python2.7/dist-packages/riak/bucket.py", line 420, in search
>>     return self._client.fulltext_search(self.name, query, **params)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py", line 184, in wrapper
>>     return self._with_retries(pool, thunk)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py", line 126, in _with_retries
>>     return fn(transport)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py", line 182, in thunk
>>     return fn(self, transport, *args, **kwargs)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/operations.py", line 573, in fulltext_search
>>     return transport.search(index, query, **params)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/transport.py", line 564, in search
>>     MSG_CODE_SEARCH_QUERY_RESP)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/connection.py", line 50, in _request
>>     return self._recv_msg(expect)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/connection.py", line 142, in _recv_msg
>>     raise RiakError(err.errmsg)
>> riak.RiakError: 'No index <<"fcb">> found.'
>> 
>> Again it says "fcb" index not found... and this time I fully followed the right documentation and didn't use "bucket.enable_search()"
>> 
>> Thanks,
>> Alex
>> 
>> 
>> On Mon, Aug 18, 2014 at 10:49 PM, Alex De la rosa <alex.rosa.box at gmail.com> wrote:
>> Hi Eric,
>> 
>> I'm sorry but I followed the documentation that you provided me and still raises issues:
>> 
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> STEP 1: Create Index: famoso
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> PYTHON:
>>   client.create_search_index('famoso')
>> 
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> STEP 2: Create Bucket Type: futbolistas
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> SHELL:
>>   riak-admin bucket-type create futbolistas '{"props":{"search_index":"famoso"}}'
>>   => futbolistas created
>>   riak-admin bucket-type activate futbolistas
>>   => futbolistas has been activated
>> 
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> STEP 3: Create Bucket and Add data: fcb
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> PYTHON:
>>   bucket = client.bucket('futbolistas', 'fcb')
>>   c = bucket.new('lionel', {'name_s': 'Lionel', 'age_i': 30, 'leader_b': True})
>>   c.store()
>> 
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> ERROR: This time it doesn't even let me save data into Riak
>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 
>> Traceback (most recent call last):
>>   File "x.py", line 10, in <module>
>>     c = bucket.new('lionel', {'name_s': 'Lionel', 'age_i': 30, 'leader_b': True})
>>   File "/usr/local/lib/python2.7/dist-packages/riak/bucket.py", line 159, in new
>>     if self.bucket_type.datatype:
>>   File "/usr/local/lib/python2.7/dist-packages/riak/util.py", line 78, in __get__
>>     value = self.fget(obj)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/bucket.py", line 618, in datatype
>>     return self.get_properties().get('datatype')
>>   File "/usr/local/lib/python2.7/dist-packages/riak/bucket.py", line 557, in get_properties
>>     return self._client.get_bucket_type_props(self)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py", line 184, in wrapper
>>     return self._with_retries(pool, thunk)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py", line 126, in _with_retries
>>     return fn(transport)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py", line 182, in thunk
>>     return fn(self, transport, *args, **kwargs)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/client/operations.py", line 265, in get_bucket_type_props
>>     return transport.get_bucket_type_props(bucket_type)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/transport.py", line 381, in get_bucket_type_props
>>     MSG_CODE_GET_BUCKET_RESP)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/connection.py", line 50, in _request
>>     return self._recv_msg(expect)
>>   File "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/connection.py", line 142, in _recv_msg
>>     raise RiakError(err.errmsg)
>> riak.RiakError: 'Invalid bucket type: <<"fcb">>'
>> 
>> How to solve that? Is step by step the documentation provided.
>> 
>> Thanks,
>> Alex
>> 
>> 
>> On Mon, Aug 18, 2014 at 10:05 PM, Eric Redmond <eredmond at basho.com> wrote:
>> The correct way to set up and use search is in the documentation. Be wary of any external sources, as they may be referring to Riak Search prior to 2.0.
>> 
>> http://docs.basho.com/riak/2.0.0/dev/using/search/
>> 
>> Eric
>> 
>> 
>> On Aug 18, 2014, at 12:41 PM, Alex De la rosa <alex.rosa.box at gmail.com> wrote:
>> 
>>> Hi Eric,
>>> 
>>> I see! Understood, could you provide a little full example on how it should work? Because I think I also tried without it and failed.
>>> 
>>> Luke told me to try using the GIT version one see if is a bug that was already fixed there.
>>> 
>>> Thanks,
>>> Alex
>>> 
>>> On Monday, August 18, 2014, Eric Redmond <eredmond at basho.com> wrote:
>>> Alex,
>>> 
>>> Don't call enable_search(). That enables *old* Riak Search (it sets the property "search":true). To revert that setting, bucket.set_property("search", False)
>>> 
>>> 
>>> 
>>> On Aug 18, 2014, at 10:55 AM, Alex De la rosa <alex.rosa.box at gmail.com> wrote:
>>> 
>>>> Hi Luke,
>>>> 
>>>> As an alternative version and following the Python Client Documentation I tried these steps without a bucket_type (although I ended in the same error):
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 1: CREATE SEARCH INDEX: mywantedindex
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> PYTHON:
>>>>   client.create_search_index('mywantedindex')
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 2: VERIFY INDEX
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> CURL:
>>>>   http://RIAK:8098/search/index/mywantedindex
>>>>   => {"name":"mywantedindex","n_val":3,"schema":"_yz_default"}
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 3: CREATE BUCKET: pleasework3
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> PYTHON:
>>>>   bucket = client.bucket('pleasework3')
>>>>   bucket.enable_search()
>>>>   bucket.set_property('search_index', 'mywantedindex')
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 4: VERIFY BUCKET PROPS
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> CURL:
>>>>   http://RIAK:8098/riak/pleasework3
>>>>   => {"props":{"allow_mult":false,"basic_quorum":false,"big_vclock":50,"chash_keyfun":{"mod":"riak_core_util","fun":"chash_std_keyfun"},"dvv_enabled":false,"dw":"quorum","last_write_wins":false,"linkfun":{"mod":"riak_kv_wm_link_walker","fun":"mapreduce_linkfun"},"n_val":3,"name":"pleasework3","notfound_ok":true,"old_vclock":86400,"postcommit":[],"pr":0,"precommit":[],"pw":0,"r":"quorum","rw":"quorum","search":true,"search_index":"mywantedindex","small_vclock":50,"w":"quorum","young_vclock":20}}
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> RESULT: ERROR!
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> PYTHON:
>>>>   print bucket.search('name=Felix')
>>>>   => riak.RiakError: 'No index <<"pleasework3">> found.'
>>>> 
>>>> At least I can see the "search_index":"mywantedindex" prop set up properly in the bucket but still getting the same error no matter what I try; I think is possible there is a bug in the Python client?
>>>> 
>>>> Thanks,
>>>> Alex
>>>> 
>>>> 
>>>> On Mon, Aug 18, 2014 at 6:14 PM, Alex De la rosa <alex.rosa.box at gmail.com> wrote:
>>>> In case is of help, here are the steps I followed:
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 1: CREATE SEARCH INDEX: mywantedindex
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> PYTHON:
>>>>   client.create_search_index('mywantedindex')
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 2: VERIFY INDEX
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> CURL:
>>>>   http://RIAK:8098/search/index/mywantedindex
>>>>   => {"name":"mywantedindex","n_val":3,"schema":"_yz_default"}
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 3: CREATE BUCKET TYPE: anothertry
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> SHELL:
>>>>   riak-admin bucket-type create anothertry '{"props":{"search_index":"mywantedindex"}}'
>>>>   => anothertry created
>>>>   riak-admin bucket-type activate anothertry
>>>>   => anothertry has been activated
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> STEP 4: CREATE BUCKET TO STORE OBJECTS: pleasework
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> PYTHON:
>>>>   bucket = client.bucket_type('anothertry').bucket('pleasework')
>>>>   bucket.enable_search()
>>>>   bucket.set_property('search_index', 'mywantedindex')
>>>>   key = bucket.new('cat-1', data={"name":"Felix","species":"Felis catus"}, content_type='application/json')
>>>>   key.store()
>>>>   print bucket.search('name=Felix')
>>>> 
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> RESULT: ERROR!
>>>> ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
>>>> riak.RiakError: 'No index <<"pleasework">> found.'
>>>> 
>>>> Thanks,
>>>> Alex
>>>> 
>>>> 
>>>> On Mon, Aug 18, 2014 at 5:59 PM, Alex De la rosa <alex.rosa.box at gmail.com> wrote:
>>>> Hi Luke,
>>>> 
>>>> Yes, I'm using the version 2.1.0rc1 installed via PIP as explained by Sean in another thread here.
>>>> 
>>>> Thanks,
>>>> Alex
>>>> 
>>>> 
>>>> On Mon, Aug 18, 2014 at 5:57 PM, Luke Bakken <lbakken at basho.com> wrote:
>>>> Hi Alex,
>>>> 
>>>> I'll work on reproducing this error, thank you for the details. I'm
>>>> assuming you're using the 2.1.0rc1 version of the Python client
>>>> available here:
>>>> 
>>>> https://pypi.python.org/pypi?:action=display&name=riak#downloads
>>>> 
>>>> --
>>>> Luke Bakken
>>>> CSE
>>>> lbakken at basho.com
>>>> 
>>>> 
>>>> On Mon, Aug 18, 2014 at 8:47 AM, Alex De la rosa
>>>> <alex.rosa.box at gmail.com> wrote:
>>>> > Hi Luke,
>>>> >
>>>> > Same error:
>>>> >
>>>> > bucket = client.bucket_type('animals').bucket('cats')
>>>> > bucket.enable_search()
>>>> > bucket.set_property('search_index', 'famous') # NEW: Setting the search
>>>> > index to the bucket
>>>> > key = bucket.new('feliz', data={"name":"Felix","species":"Felis catus"},
>>>> > content_type='application/json')
>>>> > key.store()
>>>> > print bucket.search('name=Felix')
>>>> >
>>>> > Output:
>>>> >
>>>> > Traceback (most recent call last):
>>>> >   File "x.py", line 11, in <module>
>>>> >     print bucket.search('name=Felix')
>>>> >   File "/usr/local/lib/python2.7/dist-packages/riak/bucket.py", line 420, in
>>>> > search
>>>> >     return self._client.fulltext_search(self.name, query, **params)
>>>> >   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py",
>>>> > line 184, in wrapper
>>>> >     return self._with_retries(pool, thunk)
>>>> >   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py",
>>>> > line 126, in _with_retries
>>>> >     return fn(transport)
>>>> >   File "/usr/local/lib/python2.7/dist-packages/riak/client/transport.py",
>>>> > line 182, in thunk
>>>> >     return fn(self, transport, *args, **kwargs)
>>>> >   File "/usr/local/lib/python2.7/dist-packages/riak/client/operations.py",
>>>> > line 573, in fulltext_search
>>>> >     return transport.search(index, query, **params)
>>>> >   File
>>>> > "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/transport.py",
>>>> > line 564, in search
>>>> >     MSG_CODE_SEARCH_QUERY_RESP)
>>>> >   File
>>>> > "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/connection.py",
>>>> > line 50, in _request
>>>> >     return self._recv_msg(expect)
>>>> >   File
>>>> > "/usr/local/lib/python2.7/dist-packages/riak/transports/pbc/connection.py",
>>>> > line 142, in _recv_msg
>>>> >     raise RiakError(err.errmsg)
>>>> > riak.RiakError: 'No index <<"cats">> found.'
>>>> >
>>>> > Thanks,
>>>> > Alex
>>>> >
>>>> >
>>>> > On Mon, Aug 18, 2014 at 5:00 PM, Luke Bakken <lbakken at basho.com> wrote:
>>>> >>
>>>> >> Alex -
>>>> >>
>>>> >> Let's take a step back and try out the "famous" index and "animals"
>>>> >> bucket type, which you have confirmed are set up correctly. This
>>>> >> (untested) code should create an object ("cat-1") in the "cats" bucket
>>>> >> (within the "animals" bucket type), which will then be indexed by the
>>>> >> "famous" index:
>>>> >>
>>>> >> bucket = client.bucket_type('animals').bucket('cats')
>>>> >> obj = RiakObject(client, bucket, 'cat-1')
>>>> >> obj.content_type = 'application/json'
>>>> >> obj.data = { 'name': 'Felix', 'species': 'Felis catus' }
>>>> >> obj.store()
>>>> >>
>>>> >> --
>>>> >> Luke Bakken
>>>> >> CSE
>>>> >> lbakken at basho.com
>>>> >>
>>>> >> On Mon, Aug 18, 2014 at 7:50 AM, Alex De la rosa
>>>> >> <alex.rosa.box at gmail.com> wrote:
>>>> >> > Hi Luke,
>>>> >> >
>>>> >> > I also tried with a normal bucket "cats" using the type "animals" as the
>>>> >> > documentation seemed to suggest and gave me the same error but this time
>>>> >> > saying that "cats" was not found as an index... so... still no clue how
>>>> >> > to
>>>> >> > do it.
>>>> >> >
>>>> >> > This is an alternate code I did looking at the Python client API
>>>> >> > documentation, etc...
>>>> >> >
>>>> >> > client.create_search_index('men')
>>>> >> > bucket = client.bucket('accounts')
>>>> >> > bucket.enable_search()
>>>> >> > bucket.set_property('search_index', 'men')
>>>> >> > key = bucket.new('alex', data={"username":"Alex","age":25,"sex":"male"},
>>>> >> > content_type='application/json')
>>>> >> > key.store()
>>>> >> > print bucket.search('sex=male')
>>>> >> >
>>>> >> > Again, it says "accounts" is not an index... in this code no bucket
>>>> >> > types
>>>> >> > are used, just a plain bucket "accounts"... what is wrong? what is
>>>> >> > missing
>>>> >> > for it to work??
>>>> >> >
>>>> >> > This is really frustrating.
>>>> >> >
>>>> >> > Thanks,
>>>> >> > Alex
>>>> >> >
>>>> >> >
>>>> >> > On Mon, Aug 18, 2014 at 4:44 PM, Luke Bakken <lbakken at basho.com> wrote:
>>>> >> >>
>>>> >> >> Hi Alex -
>>>> >> >>
>>>> >> >> You correctly created the "famous" index, as well as correctly
>>>> >> >> associated it with the bucket *type* "animals". Note that a bucket
>>>> >> >> type is not the same thing as a bucket in previous versions of Riak. A
>>>> >> >> bucket type is a way to give 1 or more buckets within that type the
>>>> >> >> same properties. You'll have to use different code in your Riak client
>>>> >> >> to use bucket types:
>>>> >> >>
>>>> >> >> http://docs.basho.com/riak/2.0.0/dev/advanced/bucket-types/
>>>> >> >>
>>>> >> >> --
>>>> >> >> Luke Bakken
>>>> >> >> CSE
>>>> >> >> lbakken at 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/20140818/e9dc6a3a/attachment.html>


More information about the riak-users mailing list