我遇到了使索引过程正常工作的问题。我有一个名为Article的模型,在db中我在Article表中有943条记录。对于本地测试,我有一篇包含12篇文章的sqlite数据库,并且rebuild_index和update_index运行正常。但是,当我上传到我们的Web服务器时,我从rebuild_index或update_index获得以下输出:
>python manage.py update_index
>Indexing 943 articles
>Killed
我查看了这个答案Django Haystack/ElasticSearch indexing process aborted,但我想避免更改干草堆源代码,如果我可以帮助它。有没有其他人遇到这个?另外,我正在使用飞快移动作为后端。谢谢!
这是模型类:
class Article(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(User)
abstract = models.CharField(max_length=500, blank=True)
full_text = models.TextField(blank=True)
proquest_link = models.CharField(max_length=200, blank=True, null=True)
ebsco_link = models.CharField(max_length=200, blank=True, null=True)
def __unicode__(self):
return self.title
这是索引类:
class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.NgramField(document=True, use_template=True)
title = indexes.NgramField(model_attr='title')
#We'll see how this goes
authors = indexes.NgramField(model_attr='authors')
abstract = indexes.NgramField(model_attr='abstract')
proquest_link = indexes.NgramField(model_attr='proquest_link')
ebsco_link = indexes.NgramField(model_attr='ebsco_link')
def get_model(self):
return Article
def index_queryset(self, using=None):
return self.get_model().objects.all()
答案 0 :(得分:1)
我打开了一个新的终端窗口并且跑了顶部。事实证明索引过程使用了99.9%的cpu,这就是它失败的原因。内存使用率实际上并没有那么糟糕。所以它不是代码,而是服务器,因为它是一个ec2微实例,在cpu中非常有限。再次感谢Timmy O'Mahony指出我正确的方向。
答案 1 :(得分:0)
我所做的是在我的项目safe_update_index
上创建我自己的命令,这是原始命令的副本加上关于pks_seen
的其他答案的更改。