【问题标题】:How to integrate elasticsearch with rails application specifically using "Elasticsearch" gem如何专门使用“Elasticsearch”gem 将 elasticsearch 与 rails 应用程序集成
【发布时间】:2016-02-25 08:54:13
【问题描述】:

我是 Rails 和弹性搜索的新手。我已经看到使用轮胎、Searchkick 和其他一些配置的其他资源,但我想使用Elasticsearch gem。我在我的系统上运行 rails 应用程序并运行 Elasticsearch 服务器,但我不知道如何配置它们以相互通信。

目前,我在做同样的事情时遇到了很多麻烦。任何帮助将不胜感激。

【问题讨论】:

  • 请发布您的elasticsearch相关代码,我们不知道您的问题/错误是什么。
  • require "elasticsearch/model" 类服务 "::Request" belongs_to :employee , :class_name => "::Employee" end Service.import
  • Error ActionView::Template::Error ([404] {"error":{"root_cause":[{"type":"index_not_fo und_exception","re​​ason":"no such index" ,"index":"services","re​​source.type":"inde x_or_alias","re​​source.id":"services"}],"type":"index_not_found_exception","re​​aso n":"没有这样的索引" ,"index":"services","re​​source.type":"index_or_alias","re​​source.id":"services"},"status":404}):
  • 类 ServicesController

标签: ruby-on-rails ruby-on-rails-4 elasticsearch rubygems


【解决方案1】:

对于用于模型索引的 elastic github gem 的非常基本的快速入门,您可以在开发环境中使用在 localhost:9200 上运行的 elasticsearch 执行以下操作

在 Gemfile 中:

gem 'elasticsearch-model'

然后在终端上运行:

$ bundle install

在 app/models/service.rb 中包含在类声明之后:

include Elasticsearch::Model

您现在可以使用现有数据在控制台上使用它(结果只是一个示例):

$ rails console

# Create the index for Service model on elasticsearch
> Service.__elasticsearch__.create_index!
=> {"acknowledged"=>true}

# Import current Service records into the index
> Service.import
  Service Load (207.3ms)  SELECT  "services".* FROM "services"  ORDER BY "services"."id" ASC LIMIT 1000

# Sample search returning total results
> Service.__elasticsearch__.search("mykeyword").results.total
=> 123

更多信息和细节你可以看看项目的github page

【讨论】:

    【解决方案2】:

    更好地使用elasticsearch-rails

    在 Gemfile 中:

    gem install elasticsearch-rails
    

    要从您的文章模型中导入记录,请运行:

    $ bundle exec rake environment elasticsearch:import:model CLASS='Article'
    

    要将导入的记录限制在某个 ActiveRecord 范围内,请将其传递给任务:

    $ bundle exec rake environment elasticsearch:import:model CLASS='Article' SCOPE='published'
    

    运行此命令以显示使用说明:

    $ bundle exec rake -D elasticsearch
    

    如果你想用于模型

    elasticsearch-model,其中包含 Ruby/Rails 模型的搜索集成,例如 ActiveRecord::Base 和 Mongoid,

    【讨论】:

    • 不“Elasticsearch”做与 Elasticsearch-rails 和 Elasticsearch-model 所做的相同的事情,我阅读 Elasticsearch-rails 与 Elasticsearch-rails 配套,所以我认为与其使用两个 gem,不如使用两个 gem使用一个,即 Elasticsearch..如果我错了,请纠正我。
    • 我构建了一个应用程序。现在,我想添加一个功能,以便用户可以根据选择来优化搜索,就像 Flipkart、paytm 在不同产品上所做的那样。
    • 是的,适合您的 Rails 应用程序使用 elastic-rails elasticsearch-rails 库是 elasticsearch-model 库的伴侣,提供适用于 Ruby on Rails 应用程序的功能。
    • 我在 gem 文件中添加了 Elasticsearch-rails、Elasticsearch-model...Elasticsearch 服务器在端口号上运行。 9200. 但它通过以下错误。我的模型名称是“服务”服务不存在要导入。使用创建索引!或 :force 选项来创建它。
    • C:\datacheck> bundle exec rake environment elasticsearch:import:model CLASS='SER VICE' DL 已弃用,请使用 Fiddle DL 已弃用,请使用 Fiddle rake 已中止! ArgumentError:要导入的服务不存在。使用创建索引!或 :force 选项来创建它。 C:in import' C:/datacheck/app/models/service.rb:10:in ' (eval):1:in `block (3 levels) in ' Tasks: TOP => elasticsearch:import:model (通过运行查看完整跟踪使用 --trace 的任务)当我运行 bundle exec rake environment elasticsearch:import:model CLASS='Service'
    猜你喜欢
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 2015-07-13
    相关资源
    最近更新 更多