私は以下のようなコードを持っています
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 によって削除されないようです。