在一次获取中查询Riak数据

时间:2013-11-20 23:37:39

标签: java riak

我正在使用Riak java客户端在2i(二级索引)中执行日期范围查询。此查询返回一个键列表,我再次提交给Riak以获取条目。有没有办法一次执行这两个查询,这样我就可以节省服务器往返的时间。这是我的代码片段:

        Bucket bucket = client.fetchBucket(bucketName).execute();

        FetchIndex<Number> indexQuery = bucket.fetchIndex(intIndex)
                .from(fromInMillis).to(toInMillis).maxResults(maxRows);
        if (continuationToken != null) {
            indexQuery.withContinuation(continuationToken);
        }

        StreamingOperation<IndexEntry> op = indexQuery.executeStreaming();
        List<IndexEntry> indexEntries = op.getAll();

        if(indexEntries.size() == 0){
            return;
        }

        if (op.hasContinuation()) {
            response.put("continuationToken", op.getContinuation());
        }



        String[] keys = new String[indexEntries.size()];
        for (int i = 0; i < keys.length; i++) {
            keys[i] = indexEntries.get(i).getObjectKey();
        }

        List<MultiFetchFuture<IRiakObject>> values = bucket
                .multiFetch(keys).execute();

2 个答案:

答案 0 :(得分:1)

不,没有。这只是Riak的工作方式。

2i查询仅返回对象键列表(或2i键/对象键对列表)。

答案 1 :(得分:0)

您可以尝试使用multiFetch。

对于给定的一组键,multifetch做了什么,它尝试并行化各个获取操作。

有关详细信息,请查看文档:{​​{3}} Class MultiFetch