为什么elasticsearch会引发elasticsearch_dsl.exceptions.ValidationException:你不能写入通配符index.on pypy而不是cpython?

Sea*_* W. 2 python pypy elasticsearch

我有一些将数据保存到 Elasticsearch 的代码。它在 Python 3.5.2 (cpython) 中运行良好,但在 pypi3 6.0.0 (Python 3.5.3) 上运行时会引发异常。任何想法为什么?

File "/opt/venvs/parsedmarc/site-packages/parsedmarc/elastic.py", line 366, in save_forensic_report_to_elasticsearch
  forensic_doc.save()
File "/opt/venvs/parsedmarc/site-packages/elasticsearch_dsl/document.py", line 394, in save
  index=self._get_index(index),
File "/opt/venvs/parsedmarc/site-packages/elasticsearch_dsl/document.py", line 138, in _get_index
  raise ValidationException('You cannot write to a wildcard index.')
elasticsearch_dsl.exceptions.ValidationException: You cannot write to a wildcard index
Run Code Online (Sandbox Code Playgroud)

Tei*_*Rei 5

我尝试了几种将 DocType 交换为 Document、添加或删除类 Index 或类 Meta 的组合。但是,在任何组合中,索引的名称都是空的。调试证明了这一点,经过一些调整,我让它工作了。

这段代码对我有用:

 class Index:
    # index = 'sample_index'
    name = 'sample_index'
Run Code Online (Sandbox Code Playgroud)

请注意,我没有尝试仅将其与名称一起使用。此外,它适用于 DocType,但它也应该适用于新的 Document 类。

参考GitHub 上 Sean 的问题。上面的解决方案在线程上得到了确认。将它放在一个地方,前面提到的链接:文档以替换 DocType 以获取较新版本的 Elasticsearch