I was able to resolve this with the following:
/for(String key :
bucket.fetchIndex(//*BucketIndex.index*//).withValue(bucketName).execute())/
...
...
There is a catch though, if you have a bucket with keys big enough, this
will crash your cluster ($bucket 2i seems to do something similar to the
not recommended listKeys() MR function), so our solution was to use an
existing 2i to list the keys, so my recommendation is that whatever you
do, mark your keys with at least one 2i so that you can list the keys
later using such 2i.
Hope that helps anyone needing to list the keys, again, don't list the
keys nor use $bucket special 2i index, it might for some buckets kill
your cluster, if you didn't create any 2i on some bucket, avoid listing
the keys unless are too few, if your keys are based on a sequences then
use that to get to your keys and try to index them if you ever need to
do a programmatic repair (Say you want to get rid of keys no longer in use)
In our case we needed to add some new indexes and remove deprecated
ones, so we use the deprecated index to iterate thru the keys, then
remove the old indexes and add the new ones.
/Hope our experiences help someone out there//,/
Guido.
On 29/01/13 18:44, Guido Medina wrote:
Hi,
On our presentation of how Temetra uses Riak on Dublin, we were told
there was a special index which can list me the keys on a bucket using
a 2i search, if so, does anyone has any code sample using the Java
client to do that? Something like $[bucket _name] index?
If so, is there any danger on adopting such undocumented
functionality? Like LevelDB or Riak core would remove it or deprecate it.
Regards,
Guido.
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com