私はstudent_id
をelasticsearchのフィールドに設定しようとするクラスを持っています。私はelasticsearch-dsl docsからpersistent exampleを参照しています。elasticsearch dsl pythonを使用して_idとして既存のフィールドを使用します。DocType
from elasticsearch_dsl import DocType, String
ELASTICSEARCH_INDEX = 'student_index'
class StudentDoc(DocType):
'''
Define mapping for Student type
'''
student_id = String(required=True)
name = String(null_value='')
class Meta:
# id = student_id
index = ELASTICSEARCH_INDEX
私はMeta
でid
を設定することによって縛られ、それではない作品。
私はオーバーライドsave
methodとしてソリューションを取得し、私はこの
def save(self, **kwargs):
'''
Override to set metadata id
'''
self.meta.id = self.student_id
return super(StudentDoc, self).save(**kwargs)
を達成
>>> a = StudentDoc(student_id=1, tags=['test'])
>>> a.save()
がオーバーライドsave
方法なしMeta
から設定するための直接的な方法はありますように私は、このオブジェクトを作成するのですか?
「StudentDoc」の新しいインスタンスを作成する方法も表示できますか? – Val
@Valは私の質問をより多くの情報で更新しました。 – Nilesh
@Val、[MetaField'](https://github.com/elastic/elasticsearch-dsl-py/blob/master/elasticsearch_dsl/document.py#L27)がありますが、そのことはわかりませんここで便利です。 – Nilesh