0

I have code as below

from elasticsearch_dsl.connections import connections
from elasticsearch_dsl import DocType, String, Boolean

class BaseDoc(DocType):
    id = String(required=True, index='not_analyzed')
    name = String(required=True)
    deleted = Boolean(required=True, null_value=True)

    class Meta:
        index = 'test'


class MyDoc(BaseDoc):
    pass

connections.create_connection(hosts=['localhost:9200'])

MyDoc.init()

doc = MyDoc(id='test', name='test', deleted=False)

doc.save(refresh=True)

I get error

Traceback (most recent call last):
  File "/tmp/test.py", line 31, in <module>
    doc.save(refresh=True)
  File "/usr/lib/python2.7/site-packages/elasticsearch_dsl/document.py", line 240, in save
    self.full_clean()
  File "/usr/lib/python2.7/site-packages/elasticsearch_dsl/utils.py", line 453, in full_clean
    self.clean_fields()
  File "/usr/lib/python2.7/site-packages/elasticsearch_dsl/utils.py", line 447, in clean_fields
    raise ValidationException(errors)
elasticsearch_dsl.exceptions.ValidationException: {'deleted': [ValidationException('Value required for this field.',)]}

if you see, I am passing delete=False in code when I try to create the doc object.

When its not taking deleted value?

If i remove deleted

doc = MyDoc(id='test', name='test')

doc.save(refresh=True)

Then also it gives same error, seems deleted is not taken care by elasticsearch dsl.

4

1 回答 1

1

您面临的问题已在 PR #390 中修复

所以看起来您仍在使用 0.0.11 版本。如果您使用的是 ES 2.x,则应升级以升级到 2.2.0 版;如果您使用的是 ES 5.x,则应升级到 5.1.0 版,您的问题应该得到修复。

于 2017-02-07T04:19:25.493 回答