【问题标题】:CircleCI Elastic Search with Haystack使用 Haystack 进行 CircleCI 弹性搜索
【发布时间】:2015-09-30 14:15:21
【问题描述】:

我在让 CircleCI 使用 Elastic Search 为我的 Django 项目完成测试时遇到问题。

这是来自settings.py的一个尝试

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

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

这是来自 CircleCI 报告的错误。它几乎出现在与数据库的每次交互中。

File "/home/ubuntu/virtualenvs/venv-system/local/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 155, in streaming_bulk
raise BulkIndexError('%i document(s) failed to index.' % len(errors), errors)
BulkIndexError: ('1 document(s) failed to index.', [{u'index': {u'_type': u'modelresult', u'_id': u'website.query.1', u'ok': True, u'_version': 19, u'_index': u'index_elasticsearch'}}])

这是我配置 CircleCI 测试器的 circle.yml 文件:

machine:
  environment:
    DATABASE_URL: mysql://ubuntu:@localhost:3306/circle_test
    CUSTOM_DATABASE_URL: mysql://ubuntu:@localhost:3306/circle_test
services:
   - elasticsearch

【问题讨论】:

    标签: python django elasticsearch django-haystack circleci


    【解决方案1】:

    目前,CirleCI 的默认 ElasticSearch 版本目前为 v0.90.2,Haystack v2.4.X 仅支持 ElasticSearch v1.X:

    http://django-haystack.readthedocs.org/en/latest/installing_search_engines.html#elasticsearch

    您希望在运行测试之前明确下载 v1.X+ 版本的 ElasticSearch 作为依赖项:

    https://circleci.com/docs/installing-elasticsearch

    这对我有用。

    【讨论】:

    • 我最近遇到了一个问题,即 Circle 的 ES 版本与正在部署的 Haystack 版本不兼容。我建议使用他们的文档来自定义安装您在开发/生产中使用的任何版本,而不是使用他们的内置 ES 版本。
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多