Riak Search Issue

Alex De la rosa alex.rosa.box at gmail.com
Mon Aug 18 16:56:07 EDT 2014


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
>>> <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 <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
>>>> <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/f9326fbd/attachment.html>


More information about the riak-users mailing list