我正在使用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();
答案 0 :(得分:1)
不,没有。这只是Riak的工作方式。
2i查询仅返回对象键列表(或2i键/对象键对列表)。
答案 1 :(得分:0)
您可以尝试使用multiFetch。
对于给定的一组键,multifetch做了什么,它尝试并行化各个获取操作。
有关详细信息,请查看文档:{{3}} Class MultiFetch