0

我有一个大型模型(它基本上是我的整个应用程序)。我在这个模型上有 7 个或更多关联,包括多对多、:through => 等。这个模型还有一些简单的属性(标题、url 等)。

我唯一关心的索引是那些 3 或 4 个简单属性(标题、网址、描述、类别)。其他的我不关心。

当我使用 时,一切正常load: true,但一旦我关闭它,一切都会中断。解决这个问题的唯一方法似乎是为每个关联添加复杂的映射、:touch、:touch 回调等等?

我希望我理解错了,因为这将是大量代码,仅用于搜索 3 或 4 个简单属性。

我不知道我在说什么,但我是否可以搜索弹性搜索索引,但返回一个 ID 列表,然后以正常的 rails 方式循环遍历那些?

谢谢!

4

1 回答 1

2

我不知道轮胎在内部工作原理,但是据我从该load选项为true时从文档中了解到的,它会从数据库中加载每个记录。这就是为什么我不认为你想在生产中使用它。如果没有该选项,Tire 将从 elasticsearch 检索信息,因为您应该将要显示的大部分数据存储在 elasticsearch 中。可能您需要向 elasticsearch 添加更多存储信息。您可以配置要存储在映射中的字段,否则您始终在 elasticsearch 中拥有字段,这正是您索引的 JSON 文档。

你最后一个问题的答案是肯定的。您可以从 elasticsearch 中选择要返回的字段,而不是返回整个。在您的情况下,如果我理解正确,您将配置唯一的 id 字段。我不知道如何使用轮胎来做到这一点,但就弹性搜索请求而言,你可以在这样的网址中做到这一点:

curl localhost:9200/_search?fields=id -d '{
  "query" : {
    "match_all" : {}
  }
}'

或直接在您的查询中,如下所示:

{
    "fields" : ["id"],
    "query" : {
        "match_all" : {}
    }
}
于 2012-09-26T15:43:16.787 回答