Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Elasticsearch需要映射*所有*关联?_Ruby On Rails_Ruby_Lucene_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Tire - Fatal编程技术网 elasticsearch,tire,Ruby On Rails,Ruby,Lucene,elasticsearch,Tire" /> elasticsearch,tire,Ruby On Rails,Ruby,Lucene,elasticsearch,Tire" />

Ruby on rails Elasticsearch需要映射*所有*关联?

Ruby on rails Elasticsearch需要映射*所有*关联?,ruby-on-rails,ruby,lucene,elasticsearch,tire,Ruby On Rails,Ruby,Lucene,elasticsearch,Tire,我有一个巨大的模型(它基本上是我的整个应用程序)。我在这个模型上有7个或更多的关联,包括多对多,:到=>等等。这个模型还有一些简单的属性(标题、url等等) 我唯一关心的索引是这3或4个简单属性(标题、url、描述、类别)。剩下的我不在乎 当我使用load:true时,一切都能正常工作,但一旦我关闭它,一切都会中断。解决这个问题的唯一方法似乎是为每个关联添加复杂的映射、:touch、:touch回调等等 我希望我理解错了,因为这将是一个巨大的代码量,只有通过3或4个简单的属性进行搜索 我不知道我

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

我唯一关心的索引是这3或4个简单属性(标题、url、描述、类别)。剩下的我不在乎

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

我希望我理解错了,因为这将是一个巨大的代码量,只有通过3或4个简单的属性进行搜索

我不知道我在说什么,但我可以通过elasticsearch索引进行搜索,但返回一个ID列表,然后以正常的rails方式循环搜索这些ID吗


谢谢

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

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

curl localhost:9200/_search?fields=id -d '{
  "query" : {
    "match_all" : {}
  }
}'
{
    "fields" : ["id"],
    "query" : {
        "match_all" : {}
    }
}
或者直接在您的查询中,如下所示:

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

你说什么东西都坏了?为什么load:true是不可接受的?从我读到的所有地方来看,它对于调试来说都很好,但您不想在生产中使用它。对于仅950条记录,返回结果需要1000-2000ms,也就是说,如果我搜索一个非常常见的术语(人们会这样做)。对于较小的术语,它需要100ms左右。load只是意味着在返回搜索结果后,将从DB加载相应的模型对象。性能成本仅取决于搜索结果的数量。如果您一次实际查看1000个搜索结果,那么这将增加相当大的开销。如果在一个页面上显示20个项目的结果,那么加载这20个对象并没有什么大不了的。就我个人而言,当我需要实际的活动记录对象时,我会在生产中使用它。。我每页有20页,还有页码。我注意到它造成了几乎1到2秒的巨大减速。你能不能看看这个,看看它是否有什么地方看起来不对劲,或者可能导致它走得这么慢?谢谢,我需要去阅读,很多:你帮了我很大的忙