我正在尝试使用简单的过滤器来获取Raik对象。 我在将对象存储到存储桶之前启用了对存储区的搜索,并尝试以下操作:
MapReduceResult result = riakClient。 mapReduce(“serviceProvider”,“name:oved1”)。 addMapPhase(new NamedJSFunction(“Riak.mapValuesJson”),true).execute();
我得到了这个例外:
com.basho.riak.client.RiakException:java.io.IOException:{“error”:“map_reduce_error”} 在com.basho.riak.client.query.MapReduce.execute(MapReduce.java:80) 在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”} 在com.basho.riak.client.raw.http.ConversionUtil.convert(ConversionUtil.java:588) 在com.basho.riak.client.raw.http.HTTPClientAdapter.mapReduce(HTTPClientAdapter.java:386) 在com.basho.riak.client.query.MapReduce.execute(MapReduce.java:78) ......还有3个
任何想法我错过了什么?
答案 0 :(得分:1)
能够解决这个问题......
显然,在存储将来需要搜索的对象之前,您需要做两件事:{riak_search,[{enabled,true}]}
Bucket bucket = riakClient.createBucket(bucketName).enableForSearch()。execute();
执行此操作后,将返回值:
MapReduceResult result = riakClient. mapReduce(bucketName, "name:9"). addMapPhase(new NamedJSFunction("Riak.mapValuesJson"), true). execute();