是否可以使用实时信号自动更新 haystack elastic 中的多个索引

Is it possible to have multiple index in haystack elastic using real-time signal for auto-update

我使用 haystack 在 elastic 中有多个索引我正在尝试使用 RealtimeSignalProcessor 自动更新索引。 Haystack 支持吗?

这是我关注的link。 同样的事情对单个索引非常有效。

我怀疑设置中的 Haystack_connection 有问题。请建议正确的语法。

我没有任何特定需要编写任何自定义 SignalProcessor。有没有办法使用现成的 Haystack Realtime - RealtimeSignalProcessor 我提到了 this 问题,但没有帮助。

HAYSTACK_CONNECTIONS = {
'default': {
    'ENGINE':        'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    'URL': 'http://127.0.0.1:9200/',
    'INDEX_NAME': 'haystack',
    'INCLUDE_SPELLING': True,

},
'Hello':
{
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    'URL': 'http://127.0.0.1:9200/',
    'INDEX_NAME': 'helloindex',
    'INCLUDE_SPELLING': True,
},
'Note':
{
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    'URL': 'http://127.0.0.1:9200/',
    'INDEX_NAME': 'noteindex',
    'INCLUDE_SPELLING': True,
}, 
}

提前致谢。

Yes its possible

我使用 Django-Haystack 的路由器解决了这个问题

在 settings.py 我做了这个

HAYSTACK_CONNECTIONS = {
'My_Testing':
{
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    'URL': 'http://127.0.0.1:9200/',
    'INDEX_NAME': 'my_testing',
    'INCLUDE_SPELLING': True,
    'EXCLUDED_INDEXES': ['talks.search_indexes.NoteIndex'],

},
'Note':
{
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    'URL': 'http://127.0.0.1:9200/',
    'INDEX_NAME': 'note',
    'INCLUDE_SPELLING': True,
    'EXCLUDED_INDEXES': ['talks.search_indexes.My_TestingIndex'],

},
'default': {
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
    'URL': 'http://127.0.0.1:9200/',
    'INDEX_NAME': 'haystack',
    # 'INCLUDE_SPELLING': True,

},
}

HAYSTACK_ROUTERS = ['talks.routers.My_TestingRouter',
                'talks.routers.NoteRouter']

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

并在与search_indexes.py处于同一级别的routers.py文件中添加此

    from haystack import routers


class My_TestingRouter(routers.BaseRouter):
    def for_write(self, **hints):
        return 'My_Testing'

    def for_read(self, **hints):
        return 'My_Testing'


class NoteRouter(routers.BaseRouter):
    def for_write(self, **hints):
        return 'Note'

    def for_read(self, **hints):
        return 'Note'

希望有一天这对某人有所帮助。

和平。