下面的片段相当简单,通过查看其他示例,它应该有效。
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当我使用rest客户端应用程序检查数据时,在浏览器中使用
http://localhost:8098//riak/some-users/key我得到了所需的json数据,其中当然有"firstName“:" scala ",那么为什么第一个没有返回任何值的代码片段,我已经打开了'riak_search‘,尽管我使用的是一个基于scala的应用程序的riak客户端,它不应该带来任何问题。
有没有人知道为什么这个片段不能正常工作。我的riak版本是1.3.2,Riak Java客户端:- 1.1.4
发布于 2014-06-04 03:07:13
既然你已经启动并运行了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/
https://stackoverflow.com/questions/24013509
复制相似问题