0

我正在尝试使用简单的过滤器获取 Raik 对象。在将对象存储到存储桶之前,我已启用对存储桶的搜索,并尝试以下操作:

MapReduceResult 结果 = riakClient. mapReduce("serviceProvider", "name:oved1")。addMapPhase(new NamedJSFunction("Riak.mapValuesJson"), true).execute();

我得到这个例外:

com.basho.riak.client.RiakException: java.io.IOException: {"error":"map_reduce_error"} at com.basho.riak.client.query.MapReduce.execute(MapReduce.java:80) at com.att .cso.omss.datastore.riak.controllers.RiakBaseController.getAllServiceProvider(RiakBaseController.java:339) 在 com.att.cso.omss.datastore.riak.App.serviceProviderTests(App.java:64) 在 com.att.cso .omss.datastore.riak.App.main(App.java:38) 引起:java.io.IOException: {"error":"map_reduce_error"} at com.basho.riak.client.raw.http.ConversionUtil。在 com.basho.riak.client.raw.http.HTTPClientAdapter.mapReduce(HTTPClientAdapter.java:386) 在 com.basho.riak.client.query.MapReduce.execute(MapReduce.java: 78) ... 还有 3 个

知道我错过了什么吗?

4

1 回答 1

1

能够解决这个问题...

显然,在存储将来需要搜索的对象之前,您需要做两件事:

  1. 在 app.config (/etc/riak) 中启用搜索:

{riak_search, [{启用, true}]}

  1. 在存储桶上启用搜索:

Bucket bucket = riakClient.createBucket(bucketName).enableForSearch().execute();

之后,这将返回值:

      MapReduceResult result = riakClient.
            mapReduce(bucketName, "name:9"). 
            addMapPhase(new NamedJSFunction("Riak.mapValuesJson"), true).
            execute();
于 2012-08-16T07:21:59.293 回答