Elasticsearch需要映射* all *关联吗?

时间:2012-09-26 01:38:37

标签: ruby-on-rails ruby lucene elasticsearch tire

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

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

当我使用load: true时,一切都很完美,但是一旦我把它关掉,一切都会中断。解决这个问题的唯一方法就是进入并添加复杂的映射,触摸,触摸回调等等每个关联?

我希望我理解这个错误,因为只需要搜索3或4个简单属性就可以获得大量代码。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

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

或直接在您的查询中:

{
    "fields" : ["id"],
    "query" : {
        "match_all" : {}
    }
}