Nil*_*esh 6 python elasticsearch elasticsearch-dsl
我有课,我尝试在其中设置student_id为_id字段
弹性搜索. 我指的是来自 elasticsearch-dsl 文档的持久示例。
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
Run Code Online (Sandbox Code Playgroud)
我通过设置绑定id,Meta但它不起作用。
我得到解决方案作为覆盖save方法,我实现了这个
def save(self, **kwargs):
'''
Override to set metadata id
'''
self.meta.id = self.student_id
return super(StudentDoc, self).save(**kwargs)
Run Code Online (Sandbox Code Playgroud)
我正在创建这个对象
>>> a = StudentDoc(student_id=1, tags=['test'])
>>> a.save()
Run Code Online (Sandbox Code Playgroud)
有没有直接的方法可以从Meta没有覆盖save方法的情况下进行设置?
有几种分配id的方法:
你可以这样做
a = StudentDoc(meta={'id':1}, student_id=1, tags=['test'])
a.save()
Run Code Online (Sandbox Code Playgroud)
像这样:
a = StudentDoc(student_id=1, tags=['test'])
a.meta.id = 1
a.save()
Run Code Online (Sandbox Code Playgroud)
另请注意,在 ES 1.5 之前,可以指定一个字段用作文档_id(在您的情况下,它可能是student_id),但这在 1.5 中已被弃用,从那时起您必须明确提供一个 ID 或让 ES为你选一个。
| 归档时间: |
|
| 查看次数: |
3517 次 |
| 最近记录: |