【问题标题】:django-elasticsearch-dsl-drf: TypeError: search() got an unexpected keyword argument 'doc_type'django-elasticsearch-dsl-drf: TypeError: search() got an unexpected keyword argument 'doc_type'
【发布时间】:2019-06-21 13:42:59
【问题描述】:

我正在使用以下库创建一个带有弹性搜索的 django API:

  • django-rest-framework
  • django-elasticsearch-dsl
  • django-elasticsearch-dsl-drf

调用api时,django-elasticsearch-dsl-drf库报错:

search() 得到一个意外的关键字参数“doc_type”

这是我的代码:

序列化器.py

class TestSerializer(DocumentSerializer):
    class Meta(object):
        document = TestDocument
        fields = ("id", "name")

api.py

class TestDocumentViewSet(DocumentViewSet):
 document = TestDocument
 serializer_class = TestSerializer
 lookup_field = 'id'
 filter_backends = [
    CompoundSearchFilterBackend,
 ]
 multi_match_search_fields  = ('id', 'name')
 filter_fields = {
     'id': 'id',
     'name': 'name',
 }
 ordering_fields = {
     'id': 'id',
     'name': 'name',
 }
 ordering = ('id', 'name')

有人可以帮我解决这个问题吗?

【问题讨论】:

标签: python django elasticsearch django-rest-framework


【解决方案1】:

昨天我遇到同样的问题你需要检查elasticsearch版本或者你可以通过这个命令直接下载版本 - sudo pip install elasticsearch==version(e.g 6.3.1) 您可以通过此命令检查弹性版本 - pip freeze

【讨论】:

    【解决方案2】:

    检查弹性搜索版本。希望使用兼容版本应该可以解决这个问题。

    【讨论】:

    • 你能更精确一点吗?什么线索让您认为这是版本问题?
    • @freezed 因为我昨天遇到过。 django-elasticsearch-dsl 要求:Elasticsearch >= 6.0
    猜你喜欢
    • 2020-05-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2016-04-15
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多