Python haystack elasticsearch RealtimeSignalProcessor仅限更新;“违约”;连接
我有3个搜索索引和3个haystack连接。我希望索引能够实时更新,所以我使用RealtimeSignalProcessor。它仅适用于3个连接中的1个(“默认”),但当我使用其他2个连接搜索术语时,它不起作用。然后我必须手动执行python manage.py update_index以使其正常工作。。如何在不手动更新索引的情况下修复此问题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
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而不关心底层的搜索解决方案是一种愚蠢的做法。当然,欢迎你发表意见。