haystack elasticsearch RealtimeSignalProcessor仅更新“默认”连接

时间:2015-10-07 19:49:23

标签: python django elasticsearch django-haystack

我有3个搜索索引和3个haystack连接。我希望实时更新索引,因此我使用RealtimeSignalProcessor。它仅适用于3个连接中的1个(“默认”),但是当我使用其他2个连接搜索该术语时它不起作用。我必须手动执行python manage.py update_index以使其工作。如何在不手动更新索引的情况下修复此问题?

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
    },
    'autocomplete_tags': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'autcomplete',
         'EXCLUDED_INDEXES': ['entities.search_indexes.EntityIndex', 'allauth.search_indexes.UserIndex'],
    },
    'autocomplete_entities': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'autocomplete_entities',
         'EXCLUDED_INDEXES': ['tags.search_indexes.TagsIndex', 'allauth.search_indexes.UserIndex'],
    }
}

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

答案:

我认为仅使用RealtimeSignalProcessor更新“默认”连接的原因是“INDEX_NAME”。在我将所有3个连接“INDEX_NAME”更改为“haystack”之后,它可以正常工作。

1 个答案:

答案 0 :(得分:-1)

我认为你对弹性搜索的方法是不对的。您通常有一个索引和各种类型。如果您遵循该方法,则应自动更新所有类型(希望如此)。

Haystack是用Solr构建的,我建议使用Solr。 Haystack建议像索引这样的术语你要索引的模型,但它实际上是ElasticSearch中的一个类型。查看您的HAYSTACK_CONNECTIONS,您已在索引中创建了3个索引而不是3个类型。

我有干草堆和Elasticsearch合作,但要调整它还需要做更多的工作。