Riak简单的SearchMapReduce抛出IOException

时间:2012-08-12 09:45:13

标签: mapreduce riak

我正在尝试使用简单的过滤器来获取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个

任何想法我错过了什么?

1 个答案:

答案 0 :(得分:1)

能够解决这个问题......

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

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

    {riak_search,[{enabled,true}]}

    1. 启用存储桶搜索:
    2.   

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

      执行此操作后,将返回值:

            MapReduceResult result = riakClient.
                  mapReduce(bucketName, "name:9"). 
                  addMapPhase(new NamedJSFunction("Riak.mapValuesJson"), true).
                  execute();