2012-08-12 34 views
0

我想使用簡單的過濾器獲取Raik對象。 在存儲對象之前,我已啓用對存儲桶的搜索,並嘗試以下操作:Riak簡單的SearchMapReduce拋出IOException

MapReduceResult result = riakClient。 mapReduce(「serviceProvider」,「name:oved1」)。 addMapPhase(new NamedJSFunction(「Riak.mapValuesJson」),true).execute();

我得到這個異常:

com.basho.riak.client.RiakException:java.io.IOException異常:{ 「錯誤」: 「map_reduce_error」} 在com.basho.riak。 client.query.MapReduce.execute(MapReduce.java:80) at com.att.cso.omss.datastore.riak.controllers.RiakBaseController.getAllServiceProvider(RiakBaseController.java:339) at com.att.cso.omss。 datasore.riak.App.serviceProviderTests(App.java:64) at com.att.cso.omss.datastore.riak.App.main(App.java:38) 導致:java.io.IOException:{「錯誤 「:」 map_reduc e_error「} at com.basho.riak.client.raw.http.ConversionUtil.convert(ConversionUtil.java:588) at com.basho.riak.client.raw.http.HTTPClientAdapter.mapReduce(HTTPClientAdapter.java:386 ) 在com.basho.riak.client.query.MapReduce.execute(MapReduce.java:78) ... 3個

任何想法,我缺少什麼?

回答

1

之所以能夠解決這個問題...

顯然你存儲需要被搜索的未來對象之前,需要做兩件事情:

    中的app.config
  1. 啓用搜索(的/ etc /了Riak):

{riak_search,[{啓用,真}]}

  1. 開啓剷鬥搜索:

桶桶= riakClient.createBucket(bucketName).enableForSearch()執行();

這樣做之後,將返回值:

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