Hi everyone,
I wrote a simple Python wrapper which makes use of Riak Secondary Indexes
and MapReduce for Qerying multiple indexes at once. I know it might not be
the ideal solution but thought It'd be a kind of cool stuff to do. Here is
how it works.
1. Queries Multiple Indexes and get the associated keys
2. Pass the keys to a MapReduce job where Multiple filters are again
evaluated. The map phase applies all the conditions to individual keys
client = riak.RiakClient('localhost', 8091)
bucket = client.bucket('test_multi_index')
bucket.new('sree', {'name': 'Sreejith', 'age': '25'}).\
add_index('name_bin', 'Sreejith').\
add_index('age_int', 25).store()
bucket.new('vishnu', {'name': 'Vishnu', 'age': '31'}).\
add_index('name_bin', 'Vishnu').\
add_index('age_int', 31).store()
query = RiakMultiIndexQuery(client, 'test_multi_index')
for res in query.filter('age', '<', 50).filter('name', '==',
'Vishnu').run(): :
print res
But the inequality filters are based on MIN and MAX values for both *bin*and
*int *indexes (I set that to 99999999999999999 for *int* and '' for *bin*).
I'm not sure if that is correct or there is another way to achieve that.
Suggestions and patches are always welcome :-)
https://github.com/semk/utils/blob/master/riak_multi_query.py
--
Regards,
Sreejith K
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com