我只是跟随this tutorial将elasticsearch添加到我的应用程序中。
我在windows8系统上工作,我安装了elasticsearch。但是,当我尝试在我的应用程序中搜索一些东西时,它什么也找不到。
在教程中,他们说我可以使用rails控制台查看搜索是否有效。
我安装了searchkick gem并运行bundle install。
我将searchkick添加到我的Ticket类中。
class Ticket < ActiveRecord::Base
searchkick
# ...
end我将我的Ticket类添加到索引中
rake searchkick:reindex CLASS=Book当我尝试在rails控制台中搜索某些内容时,它什么也找不到。
irb(main):001:0> results = Ticket.search("computer")
Ticket Search (103.0ms)
curl http://lvh.me:9200/tickets_development/_search?pretty -d '{
"query": {
"dis_max": {
"queries": [
{
"match": {
"_all": {
"query": "computer",
"operator": "and",
"boost": 10,
"analyzer": "searchkick_search"
}
}
},
{
"match": {
"_all": {
"query": "computer",
"operator": "and",
"boost": 10,
"analyzer": "searchkick_search2"
}
}
},
{
"match": {
"_all": {
"query": "computer",
"operator": "and",
"boost": 1,
"fuzziness": 1,
"max_expansions": 3,
"analyzer": "searchkick_search"
}
}
},
{
"match": {
"_all": {
"query": "computer",
"operator": "and",
"boost": 1,
"fuzziness": 1,
"max_expansions": 3,
"analyzer": "searchkick_search2"
}
}
}
]
}
},
"size": 100000,
"from": 0,
"fields": []
}'
=> #<Searchkick::Results:0x6ec5de8 ,
@klass=Ticket(
id: integer,
name: string,
client: string,
archived: boolean,
created_at: datetime,
updated_at: datetime
)
@response={
"took"=> 90,
"timed_out"=> false,
"_shards"=> {
"total"=> 5,
"successful"=> 5,
"failed"=> 0
},
"hits"=> {
"total"=> 0,
"max_score"=> nil,
"hits"=> []
}
},
@options={
:page=>1,
:per_page=>100000,
:padding=>0,
:load=>true,
:includes=>nil,
:json=>false
} > irb(main):002:0> results.map(&:name) => []发布于 2014-08-30 23:56:20
在运行rake searchkick之前,您必须确保elasticsearch处于活动状态。
sudo service elasticsearch status
sudo service elasticsearch start发布于 2015-04-16 00:39:39
在运行rake searchkick:reindex CLASS=Ticket之后,您是否看到任何错误?
我假设您和我有同样的问题,那就是数据库中的表
请确保以下内容:
您尝试搜索的
表必须有主键
如果一个表没有主键,Searchkick将尝试通过排序与您的表名同名的表的列来重新建立索引,它可能像您一样存在一些问题,根据我的经验,在运行rake searchkick:reindex CLASS=your_model_class_name后,searchkick:reindex会注意到一些错误
每次编辑完表结构后,不要忘了运行
rake searchkick:reindex CLASS=your_model_class_namehttps://stackoverflow.com/questions/25052973
复制相似问题