Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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
Python haystack elasticsearch RealtimeSignalProcessor仅限更新;“违约”;连接_Python_Django_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Django Haystack - Fatal编程技术网 elasticsearch,django-haystack,Python,Django,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Python,Django,elasticsearch,Django Haystack" />

Python haystack elasticsearch RealtimeSignalProcessor仅限更新;“违约”;连接

Python haystack elasticsearch RealtimeSignalProcessor仅限更新;“违约”;连接,python,django,elasticsearch,django-haystack,Python,Django,elasticsearch,Django Haystack,我有3个搜索索引和3个haystack连接。我希望索引能够实时更新,所以我使用RealtimeSignalProcessor。它仅适用于3个连接中的1个(“默认”),但当我使用其他2个连接搜索术语时,它不起作用。然后我必须手动执行python manage.py update_index以使其正常工作。。如何在不手动更新索引的情况下修复此问题 HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backend

我有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更新的原因是“索引名称”。在我将所有3个连接“INDEX_NAME”更改为“haystack”后,它就可以工作了。

我认为您的elasticsearch方法不正确。通常有一个索引和其中的各种类型。如果您遵循这种方法,所有类型都应该自动更新(希望如此)

Haystack是用Solr构建的,我建议使用Solr。Haystack为您想要索引的模型提供了索引之类的术语,但实际上它是ElasticSearch中的一种类型。查看HAYSTACK_连接,您已经创建了3个索引,而不是索引中的3种类型


我有haystack在使用Elasticsearch,但要调整它需要做很多工作。

这个答案是错误的。“通常只有一个索引和各种类型”Haystack支持多个索引。“Haystack是用Solr构建的”:Haystack独立于搜索索引,是许多不同搜索引擎平台的抽象层。@Legostrmtroppr是的,抽象并不总是很好。看着Haystack而不关心底层的搜索解决方案是一种愚蠢的做法。当然,欢迎你发表意见。