一尘不染

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

elasticsearch

我正在使用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中更改此设置吗?还是一些批处理方法?

提前致谢!


阅读 236

收藏
2020-06-22

共1个答案

一尘不染

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

pks_seen = set([smart_str(pk) for pk in qs.values_list('pk', flat=True)])

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

pks_seen = set([])

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

2020-06-22