[英]use existing field as _id using elasticsearch dsl python DocType
我有課,我嘗試將student_id
設置為_id
字段 彈性研究 。 我指的是elasticsearch-dsl docs的持久示例 。
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
方法 ,我實現了這一點
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
方法?
有幾種方法可以分配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()
另請注意,在ES 1.5之前,可以指定一個字段用作文檔_id
(在您的情況下,它可能是student_id
),但在1.5中已棄用,從那時起您必須明確提供ID或讓ES選擇一個給你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.