首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Elasticsearch,Searchkick

Rails Elasticsearch,Searchkick
EN

Stack Overflow用户
提问于 2014-07-31 15:21:09
回答 2查看 2.3K关注 0票数 1

我只是跟随this tutorial将elasticsearch添加到我的应用程序中。

我在windows8系统上工作,我安装了elasticsearch。但是,当我尝试在我的应用程序中搜索一些东西时,它什么也找不到。

在教程中,他们说我可以使用rails控制台查看搜索是否有效。

我安装了searchkick gem并运行bundle install。

我将searchkick添加到我的Ticket类中。

代码语言:javascript
复制
class Ticket < ActiveRecord::Base
  searchkick
  # ...
end

我将我的Ticket类添加到索引中

代码语言:javascript
复制
rake searchkick:reindex CLASS=Book

当我尝试在rails控制台中搜索某些内容时,它什么也找不到。

代码语言:javascript
复制
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) => []
EN

回答 2

Stack Overflow用户

发布于 2014-08-30 23:56:20

在运行rake searchkick之前,您必须确保elasticsearch处于活动状态。

代码语言:javascript
复制
sudo service elasticsearch status
sudo service elasticsearch start
票数 0
EN

Stack Overflow用户

发布于 2015-04-16 00:39:39

在运行rake searchkick:reindex CLASS=Ticket之后,您是否看到任何错误?

我假设您和我有同样的问题,那就是数据库中的表

请确保以下内容:

您尝试搜索的

表必须有主键

如果一个表没有主键,Searchkick将尝试通过排序与您的表名同名的表的列来重新建立索引,它可能像您一样存在一些问题,根据我的经验,在运行rake searchkick:reindex CLASS=your_model_class_name后,searchkick:reindex会注意到一些错误

每次编辑完表结构后,不要忘了运行

代码语言:javascript
复制
rake searchkick:reindex CLASS=your_model_class_name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25052973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档