1

我用这段代码得到了 nonodesavailableexception:

String query = "{\"phone\":\"111\"}";
User user = new User("222",null,null);

SearchOperation searchOp = new SearchOperation.Builder(BinaryValue.create(INDEX),jsonUtils.covertFromObjectToJson(user)).build();

RiakCluster cluster = RiakClient.newClient(8087, "127.0.0.1").getRiakCluster();

RiakFuture<com.basho.riak.client.core.operations.SearchOperation.Response,BinaryValue> riakFuture = cluster.execute(searchOp);

com.basho.riak.client.core.operations.SearchOperation.Response response = searchOp.get(); //Getting error in this line.

String queryString = searchOp.getQueryInfo().toString();
4

1 回答 1

0

尽管这是在黑暗中拍摄,但NoNodesAvailableException似乎暗示您的错误是客户端的错误,并且由于没有可用的节点而引发异常。

恐怕我在为 Riak 解决客户端问题方面经验不足,但我可以告诉你在这种情况下我会怎么做。

  1. 检查 Riak 是否确实存在并正在运行。转到您的 Riak 框并执行riak ping,看看它是否返回pong以确认它在那里。如果是这样,运行riak-admin wait-for-service riak_kv并等待,直到它确认riak_kv is up
  2. 检查您是否可以从您的客户端计算机访问 Riak。根据您的上述查询,您应该能够运行curl -v http://127.0.0.1:8098/stats -H "Accept: text/plain"并让它返回有关您的 Riak 安装的统计信息列表。
  3. 对您的查询进行故障排除。请记住,您可以从客户端进行的几乎每个查询也可以从curl. 请参阅https://www.tiot.jp/riak-docs/riak/kv/2.9.0p5/developing/usage/search/以获取一组与搜索相关的示例以帮助您入门。一旦您确认您的查询在 中有效curl,您就可以仔细查看您在此处发布的查询,看看它是否与您的 curl 查询匹配,如果不匹配,则进行相应调整。

根据您在出现问题之前完成上述 3 点列表的程度,您应该能够找到问题的根源,并自行或通过在此处发布新问题来集中精力解决问题。

于 2022-01-07T05:05:59.403 回答