无法为 Wagtail 设置 Elasticsearch

Unable to set up Elasticsearch for Wagtail

到目前为止,我使用了以下指南:

http://docs.wagtail.io/en/v1.9/advanced_topics/performance.html

我补充说:

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.wagtailsearch.backends.elasticsearch',
        'INDEX': '{{ project_name }}',
    },
}

给我的 base.py。当我 运行 $ ./manage.py update_index 时,我得到以下输出:

Updating backend: default
default: Rebuilding index {{ project_name }}
Traceback (most recent call last):
  File "./manage.py", line 12, in <module>
    execute_from_command_line(sys.argv)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/wagtail/wagtailsearch/management/commands/update_index.py", line 120, in handle
    self.update_backend(backend_name, schema_only=options.get('schema_only', False))
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/wagtail/wagtailsearch/management/commands/update_index.py", line 73, in update_backend
    index = rebuilder.start()
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/wagtail/wagtailsearch/backends/elasticsearch.py", line 613, in start
    self.reset_index()
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/wagtail/wagtailsearch/backends/elasticsearch.py", line 609, in reset_index
    self.index.reset()
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/wagtail/wagtailsearch/backends/elasticsearch.py", line 598, in reset
    self.delete()
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/wagtail/wagtailsearch/backends/elasticsearch.py", line 499, in delete
    self.es.indices.delete(self.name)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 73, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/elasticsearch/client/indices.py", line 200, in delete
    params=params)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/elasticsearch/transport.py", line 318, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "/home/emtr0/Env/emtr0dotcom/local/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 123, in perform_request
    raise ConnectionError('N/A', str(e), e)
elasticsearch.exceptions.ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x7f3b708fa210>: Failed to establish a new connection: [Errno 111] Connection refused) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7f3b708fa210>: Failed to establish a new connection: [Errno 111] Connection refused)

提前致谢。

编辑更新:

看来我的 Linode 内存不足。在全局安装后尝试使用 ./bin/elasticsearch 运行 ES 时出现以下错误:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/emtr0/elasticsearch-5.3.0/hs_err_pid24719.log

谢谢。

抱歉,我没有足够的声誉直接在您的问题下发表评论,希望这能帮助您解决问题:

  • 在本地安装 elasticsearch,运行 它,然后使用简单的 curl http://localhost:9200 检查它是否 运行ning(应该在端口 9200 上)。如果您收到 JSON 响应,则为 运行ning

  • 设置一个盆景 (http://bonsai.io) 实例以拥有一个托管的弹性搜索服务器 运行ning,只需将盆景的服务器 URL 复制粘贴到您的配置中,但它可能需要更多设置(SSL 等),并且在 elasticsearch 版本方面受到更多限制

奖励:如果您是 macOS 用户,installing/running Elastic Search 就像 brew install elasticsearch 一样简单(尽管可以设置特定版本),如果您不这样做,则 elasticsearch不介意让它 运行 出现在前台。

对于仍然有此问题的人,请确保您的 Elasticsearch 版本和 elasticsearch-py 版本相同。 elasticsearch 和 py 版本都需要安装。这为我修好了。