$ gem install tire || https://github.com/karmi/retire
#加载
#model中加载tire模块 class Article < ActiveRecord::Base include Tire::Model::Search include Tire::Model::Callbacks end
#索引的名字
index_name "#{Tire::Model::Search.index_prefix}<模型名字>"
#建立索引
class Article < ActiveRecord::Base include Tire::Model::Search include Tire::Model::Callbacks mapping do indexes :id, :index => :not_analyzed indexes :title, :analyzer => 'snowball', :boost => 100 indexes :content, :analyzer => 'snowball' indexes :content_size, :as => 'content.size' indexes :author, :analyzer => 'keyword' indexes :published_on, :type => 'date', :include_in_all => false end end # analyzer:分词【keyword,snowball…】 type:类型【string, integer, date ...】 boost:权重
# 创建json
class Article < ActiveRecord::Base # 可以添加一些方法 def to_indexed_json names = author.split(/\W/) last_name = names.pop first_name = names.join { :title => title, :content => content, :author => { :first_name => first_name, :last_name => last_name } }.to_json end end #... 添加方法 def is_admin? do ... end def to_indexed_json to_json( include: {:user{methods: [:is_admin?]}}) end
# 更新索引
class Article < ActiveRecord::Base include Tire::Model::Search after_save do update_index if state == 'published' end end
# 构建搜索的json数据
…… # 搜索方法,静态方法 DEFAULT_QUERY_FIELDS = ['title','des'] def self.search(params) # page:分页页数,per_page:每页的数量, highlight:高亮 # load:不加这个以为着要直接用elasticsearch搜索的json,通过 _source 或fields 取JSON属性,如果加上true 或 {include: user},返回的结果有对象 tire.search(:page => (params[:page] || 1), per_page: 10, highlight: :name, load: true) do # 表示查询项 query do # 表示对比值 boolean do term单一属性 must { term 'is_admin?', true } must { string (params[:q] || '*'), default_operator: "AND", fields: DEFAULT_QUERY_FIELDS } end end # terms表述属性是[...], 与后面的交集 filter :terms, 'tags' => ['ruby', 'java'] ## range 表示范围 filter :range, 'price' => {gte: 1} filter :range, 'price' => {lte: 2} # 表示被包含 facet 'global-tags', :global => true do terms :tags end # 排序(添加时间索引 type:date) sort { by 'created_at', "desc" } end end ……
简单类型: String:字符型最常用的 Integer:整型 Long:长整型 Float:浮点型 Double:双字节型 Boolean:布尔型 复杂类型: Array:数组型 Object:对象类型 Nested: 嵌入类型用的还是比较多的
multi_field允许为一个字段设置多个数据类型。应用multi_field的一个最典型的场景是:"properties": { "created": { "type":"multi_field", "fields": { "created": { "type": "string" }, "date": { "type": "date"}}}}
filter :nested, {path: 'cars'}.merge({query: ( Tire::Search::Query.new do filtered do query { all } filter :range, 'cars.price' => {gte: params[:price_from].to_i} if params[:price_from].present? filter :range, 'cars.price' => {lte: params[:price_to].to_i} if params[:price_to].present? end end).to_hash}) if params[:price_from].blank? && params[:price_to]
tire 删除索引(这个索引的数据已经被删除了)
def self.date_authen!(klass, result) begin result.results rescue ActiveRecord::RecordNotFound => ex index_ids = ex.message.split('(')[1].to_s.split(')')[0].to_s.split(',').map(&:to_i) kass_ids = klass.where(id: index_ids).select(:id).map(&:id) delete_ids = index_ids - kass_ids delete_ids.each do |id| klass.tire.index.remove(klass.name.tableize.singularize, id) end klass.tire.index.refresh end result end
Nested http://www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/
查看index:sudo ./bin/plugin -install mobz/elasticsearch-head
相关推荐
Elasticsearch 项目提供了Elasticsearch客户端和Ruby API。 安装 从安装每个库: gem install elasticsearch-model gem install elasticsearch-rails 要使用未发布的版本,请将其添加到的Gemfile中: gem 'elastic...
支持rails2.0以上版本的配置说明,文档从我自己的博客中整理出来,不愿意用资源分的朋友可以去我的博客看: http://wudihamagong.spaces.live.com/ 或者 http://blog.csdn.net/abcdefg0 ^_^
Ruby on Rails中文指南
TestTrack Rails客户端这是TestTrack系统的Rails客户端库。 它通过一个简单的API提供服务器端的拆分测试和功能切换。 如果您要进行客户端分配,请签出TestTrack Rails客户端。这是TestTrack系统的Rails客户端库。 它...
RailsSpace teaches you Ruby on Rails by developing a real-world application: RailsSpace, a social networking website aimed at the Rails community itself.
是的Ruby on Rails客户端。 您可以在注册一个Stream帐户。 请注意,还有一个较低级别的库,适用于所有Ruby应用程序。 活动流和新闻源 您可以建立什么: 活动流,例如在Github上看到的 Twitter风格的新闻源 像...
通过将许多ActiveModel::Validation功能移植到JavaScript,Judge可以轻松地对Rails进行客户端表单验证。 最常见的验证通过存储在HTML5数据属性中的JSON字符串进行,并且仅在客户端执行。 无论您在何处,Judge都为...
段轨 Segment 是您的应用程序和分析系统之间令人难以置信的抽象层。 它的主要好处是在用户界面端跟踪事件时。 这包括服务器上不可用... 在ApplicationController配置segment-rails class ApplicationController < A
《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容,使读者能够快速地找到对应的API文档、相关的示例代码以及深入...
Searchkick能够学习你的用户正在寻找什么。随着更多的人搜索,它变得更聪明并获得更好的结果。这对开发者友好,让你的用户感到神奇。
Ruby On Rails中文教材(PDF)
rails 配置文档 ror ruby on rails
Squash 客户端库:Ruby on Rails 此客户端库向 Squash(Squarish 异常报告和管理系统)报告异常。 它与纯 Ruby 和 Ruby on Rails 项目兼容。文档在整个源代码中,综合文档以 YARD 和 Markdown 格式的注释编写。 要将...
敏捷Rails中文教程 敏捷Rails中文教程 敏捷Rails中文教程
使用Aptana+Rails开发Rails Web应用 有Aptana的安装配置等等,中文
提供Holder.js以完全在客户端上渲染图像占位符。 安装 添加到您的Gemfile: gem 'holder_rails' 并运行: bundle install 用法 添加到您JavaScript清单文件中: //= require holder 对于低于2.3.2的版本,...
rails-perftest, 测试和配置你的Rails 应用程序 性能测试 Rails 应用程序本指南介绍了 Ruby on Rails 应用程序性能测试的各种方法。阅读本指南后,你将知道:各种类型的基准测试和分析度量。如何生成性能和基准测试...
配置高可用的rails,文档图文并茂!易读性强!推荐有一定ruby基础的同学看看!
将此行添加到您的应用程序的Gemfile中: gem 'mautic' , '~> 2.3' 然后执行: $ bundle 另外,您需要迁移数据库: $ rails db:migrate 配置 添加到config/initializers/mautic.rb : Mautic . configure do ...
rails指南 中文版