【发布时间】:2016-01-30 16:48:54
【问题描述】:
我是 Riak 的新手,我正在尝试让 Riak Search 启动并运行,但到目前为止我失败得很惨。我在下面列出了我尝试过的步骤,请告知我缺少的内容。
1) 创建索引:
curl -X PUT http://192.168.189.153:10018/search/index/ix1 \
-H 'Content-Type: application/json' \
-d '{"schema":"_yz_default"}'
2) 创建并激活索引
riak-admin bucket-type create citytype '{"props":{"search_index":"ix1"}}'
riak-admin bucket-type activate citytype
4) 使用 Ruby 创建
require 'riak'
client = Riak::Client.new(:nodes => [
{:host => "192.168.189.153", :pb_port => 10017},
{:host => "192.168.189.153", :pb_port => 10027},
{:host => "192.168.189.153", :pb_port => 10037}
])
city = {
:name => 'Roskilde',
:countrycode => 'DK',
:location => '1.2',
:population => 80000
}
city_bucket = client.bucket_type('citytype').bucket('byer')
new_city = city_bucket.get_or_new(city[:name])
new_city.data = city
new_city.store(w: 3, dw: 2)
5) 使用 Ruby 检索
require 'riak'
client = Riak::Client.new(:nodes => [
{:host => "192.168.189.153", :pb_port => 10017}
])
city_bucket = client.bucket_type('citytype').bucket('byer')
fetched = city_bucket.get('Roskilde')
p fetched
results = client.search("ix1", "name:Roskilde")
p results
p results['docs']
6) 输出
ruby search1.rb
#<Riak::RObject {byer,Roskilde} [#<Riak::RContent [application/json]:{"name"=>"Roskilde", "countrycode"=>"DK", "location"=>"1.2", "population"=>80000}>]>
{"max_score"=>0.0, "num_found"=>0, "docs"=>[]}
[]
7) 通过 HTTP
http://192.168.189.153:10018/types/citytype/buckets/byer/keys/Roskilde
{"name":"Roskilde","countrycode":"DK","location":"1.2","population":80000}
http://192.168.189.153:10018/search/query/ix1?wt=json&q=name:Roskilde
{"responseHeader":{"status":0,"QTime":10,"params":{"192.168.189.153:10034":"_yz_pn:51 OR _yz_pn:39 OR _yz_pn:36 OR _yz_pn:27 OR _yz_pn:24 OR _yz_pn:12","shards":"192.168.189.153:10014/internal_solr/ix1,192.168.189.153:10024/internal_solr/ix1,192.168.189.153:10034/internal_solr/ix1","q":"name:Roskilde","wt":"json","192.168.189.153:10014":"_yz_pn:64 OR (_yz_pn:61 AND (_yz_fpn:61)) OR _yz_pn:60 OR _yz_pn:57 OR _yz_pn:48 OR _yz_pn:45 OR _yz_pn:33 OR _yz_pn:21 OR _yz_pn:9","192.168.189.153:10024":"_yz_pn:54 OR _yz_pn:42 OR _yz_pn:30 OR _yz_pn:18 OR _yz_pn:15 OR _yz_pn:6 OR _yz_pn:3"}},"response":{"numFound":0,"start":0,"maxScore":0.0,"docs":[]}}
8) 错误日志
solr.log 文件只有可解释的错误(出于绝望,我做了一些奇怪通配符搜索)
error.log 文件显示了许多类似的错误,但最近的一组新测试中没有一个错误:
23:15:41.308 [error] Error in process <0.4385.0> on node 'dev1@192.168.189.153' with exit value: {{badmatch,['dev3@192.168.189.153']},[{yz_index,wait_for_index,3,[{file,"src/yz_index.erl"},{line,415}]}]}
9) 版本
karsten@ubuntu:~/riak$ dev/dev1/bin/riak-admin status | grep riak_kv_version
riak_kv_version : <<"2.0.2-99-g404619c">>
karsten@ubuntu:~/riak$
karsten@ubuntu:~/riak$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
karsten@ubuntu:~/riak$
【问题讨论】:
-
Karsten,我不是 Ruby 人,所以我不知道您的 Ruby 代码是否正确(假设它是正确的)我会尝试以下操作: 1. 检查您的 error.log和 solr.log 文件。如果您有任何错误,这将有助于诊断问题 2. 通过 curl 或您的网络浏览器(即127.0.0.1:8098/search/query/ix1?wt=json&q=name:Roskilde)尝试您的 Solr 查询,看看它是否在那里工作
-
你使用的是什么版本的 Riak?