ActiveModel / ActiveRecord编辑

elasticsearch-model Rubygem 提供了与 Ruby 域对象(“模型”)的集成,这些对象通常在 Ruby on Rails 应用程序中找到。

它使用 elasticsearch Rubygem 作为与 Elasticsearch 集群通信的客户端。

特性编辑

  • ActiveModel 与 ActiveRecord 和 Mongoid 的适配器集成
  • 基于 Enumerable 的搜索结果包装器
  • 基于 ActiveRecord::Relation 的包装器,用于将搜索结果作为记录返回
  • 便捷的模型方法,例如 searchmappingimport
  • 支持 Kaminari 和 WillPaginate 分页
  • 通过代理对象实现的扩展,以防止模型命名空间发生冲突
  • 用于(重新)创建索引、设置映射、索引文档等的便捷方法

用法编辑

将库添加到您的 Gemfile 中

gem 'elasticsearch-rails'

在您的模型类中包含扩展模块

class Article < ActiveRecord::Base
  include Elasticsearch::Model
end

导入一些数据并执行搜索

Article.import

response = Article.search 'fox dog'
response.took
# => 3

可以使用 recordsresults 方法分别将结果作为模型实例或 Elasticsearch 中的装饰文档返回

response.records.first
# Article Load (0.4ms)  SELECT "articles".* FROM "articles"  WHERE ...
=> #<Article id: 3, title: "Foo " ...>

response.results.first._score
# => 0.02250402

response.results.first._source.title
# => "Quick brown fox"

有关更多信息,请参阅文档