Riak简单查询不返回数据 - Riak Java Client

时间:2014-06-03 11:02:55

标签: scala riak

以下代码段相当简单,通过查看其他示例,它应该有效

val result = client.mapReduce("some-users","firstName:Scala").execute
println(result.getResultRaw)// It just prints "[]"

但是,带有firstName:Scala的记录实际上就在那里。

运行此代码,

val result = client.mapReduce("some-users").execute ,it actually returns the key of the record

当我使用其他客户端应用程序检查数据时,在我的浏览器中使用

http://localhost:8098//riak/some-users/key

我得到了所需的json数据,这当然有" firstName" :" Scala",那么为什么不是第一个返回任何值的片段,我已经转向' riak_search'虽然我使用riak java客户端作为基于scala的应用程序,但它不应该造成任何问题。

有没有人知道为什么代码段不能正常工作。我的riak版本是1.3.2和Riak Java客户端: - 1.1.4

1 个答案:

答案 0 :(得分:1)

由于你已经启动并运行了Riak,你只需要进行搜索:

首先确保在群集中的每个节点上的app.config文件中启用了搜索:

{riak_search, [
               {enabled, true}
              ]},

如果您更改了,则需要重新启动Riak才能生效。

然后从命令行,在要编制索引的存储桶上安装搜索挂钩:

# search-cmd install testbucket
 :: Installing Riak Search <--> KV hook on bucket 'testbucket'.

此时如果存储桶中已有数据,则 将被编入索引。您需要重新放置要编制索引的任何预先存在的数据。

为了快速演示,我创建了3个键,创造性地命名为1,2和3;每个包含一个简单的json对象:

curl localhost:8098/buckets/testbucket/keys/1 -H "content-type: application/json" -XPUT \
 -d '{"firstName":"Tom", "color":"red"}'
curl localhost:8098/buckets/testbucket/keys/2 -H "content-type: application/json" -XPUT \
 -d '{"firstName":"Dick", "color":"green"}'
curl localhost:8098/buckets/testbucket/keys/3 -H "content-type: application/json" -XPUT \
 -d '{"firstName":"Harry", "color":"blue"}'

然后我可以查询搜索以找到密钥:

# curl http://localhost:8098/solr/testbucket/select\?q=firstName:Harry         
<?xml version="1.0" encoding="UTF-8"?>
<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">1</int>
    <lst name="params">
      <str name="indent">on</str>
      <str name="start">0</str>
      <str name="q">firstName:Harry</str>
      <str name="q.op">or</str>
      <str name="filter"></str>
      <str name="df">value</str>
      <str name="wt">standard</str>
      <str name="version">1.1</str>
      <str name="rows">1</str>
    </lst>
  </lst>
  <result name="response" numFound="1" start="0" maxScore="0.353553">
    <doc>
      <str name="id">3
      </str>
      <str name="color">blue
      </str>
      <str name="firstName">Harry
      </str>
    </doc>
  </result>
</response>

# curl http://localhost:8098/solr/testbucket/select\?q=color:red%20or%20firstName:Harry
<?xml version="1.0" encoding="UTF-8"?>
<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">2</int>
    <lst name="params">
      <str name="indent">on</str>
      <str name="start">0</str>
      <str name="q">color:red or firstName:Harry</str>
      <str name="q.op">or</str>
      <str name="filter"></str>
      <str name="df">value</str>
      <str name="wt">standard</str>
      <str name="version">1.1</str>
      <str name="rows">2</str>
    </lst>
  </lst>
  <result name="response" numFound="2" start="0" maxScore="0.143844">
    <doc>
      <str name="id">1
      </str>
      <str name="color">red
      </str>
      <str name="firstName">Tom
      </str>
    </doc>
    <doc>
      <str name="id">3
      </str>
      <str name="color">blue
      </str>
      <str name="firstName">Harry
      </str>
    </doc>
  </result>
</response>

我没有Scala安装方法来提供一个示例,但这应该让你朝着正确的方向前进。

如果您还没有看过它们,搜索文档就在这里:
http://docs.basho.com/riak/latest/dev/using/search/