当前位置: 首页 > 面试题库 >

Django Haystack / ElasticSearch索引编制过程中止

颜熙云
2023-03-14
问题内容

我正在使用Django 1.4,Haystack 2 beta和ElasticSearch .20运行安装程序。我的数据库是PostgreSQL
9.1,它有几百万条记录。当我尝试使用haystack /
elasticsearch索引所有数据时,该过程超时,并且收到一条消息,提示“已杀死”。到目前为止,我已经注意到以下几点:

  1. 我确实获得了要建立索引的文档数量,因此没有出现“ 0个要建立索引的文档”之类的错误。
  2. 索引一个很小的集合(例如1000)很好用。
  3. 我尝试过硬编码超时haystack/backends/__init__.py,这似乎没有任何效果。
  4. 我也尝试过更改elasticsearch.yml中的选项也无济于事。

如果硬编码超时不起作用,那么我还能如何延长索引时间呢?还有其他方法可以直接在ElasticSearch中更改此设置吗?还是一些批处理方法?

提前致谢!


问题答案:

该版本的干草堆有故障。在以下行的文件haystack / management / commands /
update_index.py中找到导致问题的代码行:

pks_seen = set([smart_str(pk) for pk in qs.values_html" target="_blank">list('pk', flat=True)])

导致服务器内存不足。但是,对于索引,似乎并不需要它。因此,我将其更改为:

pks_seen = set([])

现在,它正在批量运行。谢谢大家回答!



 类似资料:
  • 问题内容: 就像标题所说的… 我阅读了这篇文章(https://www.elastic.co/blog/changing-mapping-with-zero- downtime ),这个概念很棒,但是我很难找到有关如何通过JAVA API进行操作的不错的参考。 我找到了这个插件:https : //github.com/karussell/elasticsearch- reindex,但似乎对我尝

  • 问题内容: 我试图了解如何在Elasticsearch上优化索引。让我澄清我的需求; 我现在有两个指标。可以这样说和(两个索引可以看到大致相同的大小) 我有6台专用于Elasticsearch的机器(我们可以说完全相同的硬件) 我的elasticsearch用法中最重要的部分是写作,因为我实时进行大量写作。 所以我的问题是,如何使用这6台机器优化写入操作? 我是否应该将机器分为两部分,例如3台机器

  • 问题内容: 我有一个大约2亿个文档的ElasticSearch索引,总索引大小为90Gb。 我更改了映射,所以我希望ElasticSearch重新索引所有文档。 我编写了一个脚本,该脚本创建一个新索引(具有新映射),然后遍历旧索引中的所有文档,然后将其放入新索引中。 它似乎可以工作,但是问题是它的运行速度非常慢。它从两天前以300个文档/分钟开始,现在的速度是150个文档/分钟。 该脚本在elas

  • 本文向大家介绍Elasticsearch 为文档编制索引(即添加样本),包括了Elasticsearch 为文档编制索引(即添加样本)的使用技巧和注意事项,需要的朋友参考一下 示例 通过以下步骤安装必要的Python库: 连接到Elasticsearch,创建一个文档(例如,数据条目),然后使用Elasticsearch对文档进行“索引”。            

  • 我想知道推荐的方法是什么来过滤掉从存储和索引发送到Elasticsearch的一些字段? 我想过滤我们的一些字段,使其不在Elasticsearch中被索引。您可能会问,为什么从一开始就将它们发送到Elasticsearch。不幸的是,它是通过另一个不接受任何过滤机制的应用程序发送的。因此,应在索引时解决过滤问题。以下是我们所做的,但我不确定这些步骤会产生什么后果: 1-禁用ES模板中的动态映射(

  • 问题内容: 我试图弄清楚为什么Elasticsearch在索引编制方面如此之慢。我不确定这是否是Elasticsearch本身的局限性,但我将分享到目前为止的内容。 我有一个elasticsearch节点和一个运行在一个盒子上的logstash实例。我的文档大约有15个字段,并且我有一个具有正确类型的elasticsearch映射设置(尽管我尝试了不使用映射并获得几乎相同的结果)。 我一次将大约8