【发布时间】:2012-09-17 14:06:13
【问题描述】:
我有一个大型模型(它基本上是我的整个应用程序)。我在这个模型上有 7 个或更多关联,包括多对多、:through => 等。这个模型还有一些简单的属性(标题、url 等)。
我唯一关心的索引是那些 3 或 4 个简单的属性(标题、网址、描述、类别)。其他的我不关心。
当我使用load: true 时,一切正常,但一旦我关闭它,一切都会中断。解决这个问题的唯一方法似乎是为每个关联添加复杂的映射、:touch、:touch 回调等等?
我希望我理解错了,因为这将是大量代码,仅用于搜索 3 或 4 个简单属性。
我不知道我在说什么,但我是否可以搜索 elasticsearch 索引,但返回一个 ID 列表,然后以正常的 rails 方式循环遍历它们?
谢谢!
【问题讨论】:
-
一切都中断是什么意思?为什么 load: true 不可接受?
-
从我读到的所有地方,它都非常适合调试,但您不想在生产中使用它。只有 950 条记录需要 1000-2000 毫秒才能返回结果
-
也就是说,如果我搜索一个非常常见的术语(人们会这样做)。对于较小的术语,它需要 100 毫秒左右。
-
load 只是表示搜索结果返回后,从数据库中加载相应的模型对象。性能成本仅取决于搜索结果的数量。如果您实际上一次查看 1000 个搜索结果,那么这将增加相当大的开销。如果您在一个页面上显示结果 20 个项目,那么加载这 20 个对象没什么大不了的。当我需要实际的 Active Record 对象时,我个人会在生产中使用它。
-
有趣.. 好吧,我每页有 20 个,并且分页。我注意到它会造成近 1 到 2 秒的大幅减速。你能不能看看这个,看看它是否有任何问题,或者可能导致它运行得这么慢? gist.github.com/3785450
标签: ruby-on-rails ruby lucene elasticsearch tire