我有一个类,尝试将student_id设置为_id字段

弹性搜索。我指的是来自elasticsearch文档的持久化示例。
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中设置了Meta,但是它不起作用。
我获得了覆盖方法的解决方案,并实现了这一目标
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设置的方法吗?
发布于 2016-07-29 05:26:51
有几种分配id的方法:
你可以这样做
a = StudentDoc(meta={'id':1}, student_id=1, tags=['test'])
a.save()如下所示:
a = StudentDoc(student_id=1, tags=['test'])
a.meta.id = 1
a.save()还请注意,在ES1.5之前,可以使用指定字段作为文档_id (在您的示例中,它可能是student_id),但这在1.5中已被否决,从那时起,您必须显式提供一个ID,或者让我们为您选择一个ID。
https://stackoverflow.com/questions/38533990
复制相似问题