У меня есть класс, где я пытаюсь установить student_id
как _id
Поле в elasticsearch. Я имею в виду persistent example из документов elasticsearch-dsl.использовать существующее поле как _id используя elasticsearch dsl python 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
Я привязал установкой id
в Meta
, но он не работает.
я получаю решение, как переопределение 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()
Есть ли прямой способ установить с Meta
без переназначения save
метода?
Можете ли вы также показать, как вы создаете новый экземпляр «StudentDoc»? – Val
@Val обновил мой вопрос с дополнительной информацией. – Nilesh
@Val, есть ['MetaField'] (https://github.com/elastic/elasticsearch-dsl-py/blob/master/elasticsearch_dsl/document.py#L27), но я не знаю, что будет полезно здесь. – Nilesh