0

私は以下のようなコードを持っています

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)

エラーが発生します

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.',)]}

delete=Falseご覧のとおり、doc オブジェクトを作成しようとするときにコードを渡しています。

値を取得していないときはdeleted

私が削除した場合deleted

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

doc.save(refresh=True)

次に、同じエラーが発生します。elasticsearch dsl によって削除されないようです。

4

1 に答える 1