【发布时间】:2013-05-25 20:33:18
【问题描述】:
我正在使用 Tire 来实现 Elasticsearch。我的环境是 Linux,Rails 3.2 和 Ruby 1.9.3。 我可以在 gem Tire(0.5.8) 的帮助下使用 Elasticsearch 进行索引。 但现在为了提高性能,我想从索引数据中显示数据而不是命中数据库(我只想将 db 用于 INSERT 和 UPDATE)。
为了实现这一点,我使用以下代码:
result = Tire.search 'jobs', load: true do
query do
string "is_active:1"
end
filter :range, status: {gte: 0 }
sort { by :created_at, 'desc' }
end
return result.results
由于我使用的是 load:true,它会命中我不想要的数据库(MySQL)。但是我正在删除 load 属性,然后它没有给我任何结果。 我能够检查提到的表的所有列是否都已编入索引(“xxx:9200/jobs/_mapping?pretty=1”)。
请建议我如何实现它。
谢谢。
【问题讨论】:
-
result.inspect 返回什么?
-
感谢@concept47 的响应。现在我可以用弹性模型代替 ActiveRecord。返回的 result.inspect 如下所述: #<:search::search:0x8a1a4d4>false, :page =>1, :per_page=>20}, @path=\"/jobs/_search\", @query=#<:search::query:0x8813d98>{:query=> \"is_active:1\"}}>, @filters=[{:range=>{:status=>{:gte=>0}}}], @sort={:created_at=>\"desc\"} ] 现在,如何实现关联来代替急切加载代码。
标签: mysql ruby ruby-on-rails-3 elasticsearch tire