首页 > 解决方案 > 弹性搜索模型init()引发关键错误

问题描述

根据文档,我用我的一些模型字段创建了类,以便稍后执行搜索。我还使用默认参数创建了连接。但我不能调用 init()UserIndex

from elasticsearch_dsl import DocType, Text, Boolean, Date, Keyword
from elasticsearch_dsl.connections import connections

connections.create_connection(hosts=['localhost'], timeout=20)

class UserIndex(DocType):
    pk = Text()
    phone_number = Text()
    nickname = Text()
    name = Text()
    birth_date = Date()
    class Meta:
        index = 'user'

命令后UserIndex.init()我收到一个错误:

  File ".../lib/python3.6/site-packages/elasticsearch_dsl/document.py", line 138, in init
    i.save(using=using)
  File ".../lib/python3.6/site-packages/elasticsearch_dsl/index.py", line 289, in save
    current_settings = self.get_settings(using=using)[self._name]['settings']['index']
KeyError: '*'

标签: djangoelasticsearch

解决方案


您使用的是什么版本的 elasticsearch-dsl?看起来最新版本(6.3.0)有问题(这个发布的问题看起来很相似)。

回滚到 6.2.1 为我解决了这个错误。


推荐阅读