使用Haystak将Django应用程序与Elasticsearch连接

时间:2017-07-27 12:28:31

标签: django elasticsearch django-haystack

我正在创建一个包含数百万个数据的Django应用程序。因此,为了获得更好的结果,我尝试使用Elasticsearch来存储数据。我也在尝试使用Haystack进行搜索。但目前我陷入了通过Haystack将Django应用程序与Elasticsearch连接的过程中。

我的数据库配置是:

'default': {
        'ENGINE': 'django_elasticsearch',
        'NAME': 'test',
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '9200',
        'SUPPORTS_TRANSACTIONS': False,
    },

在settings.py文件中,我安装了haystack和elasticsearch app。 我还根据settings.py中的文档复制了Haystack设置。

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch2_backend.Elasticsearch2SearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
    },
}

弹性搜索完美运行

{
  "name" : "TN1nVS-",
  "cluster_name" : "elasticsearch_manishojha",
  "cluster_uuid" : "zZQxFpkCT8qUO_GVVQAmHA",
  "version" : {
    "number" : "5.5.1",
    "build_hash" : "19c13d0",
    "build_date" : "2017-07-18T20:44:24.823Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

现在所需要的只是应用程序和elasticsearch之间的连接。

1 个答案:

答案 0 :(得分:0)

Haystack does not support但Elasticsearch v5.5.1。 您必须回滚到Elasticsearch v2.4.1并通过pip(或任何包管理器)添加包elasticsearch2-haystack,以便将Elasticsearch v2x引擎移植到haystack。之后,设置将

HAYSTACK_CONNECTIONS = {
'default': {
    'ENGINE': 'elasticsearch2_backend.ElasticsearchSearchEngine',
    'URL': 'http://127.0.0.1:9200/',
    'INDEX_NAME': 'haystack',
},

}

我希望它会对你有所帮助。