使用elasticsearch dsl python DocTyp将现有字段用作\u id

2024-10-04 01:31:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类,我试图将student_id设置为中的_id字段。我指的是elasticsearch dsl文档中的persistent example。在

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来绑定,但它不起作用。在

我得到的解决方案是override^{} method,我实现了这一点

^{pr2}$

我将此对象创建为

>>> a = StudentDoc(student_id=1, tags=['test'])
>>> a.save()

有没有直接从Meta设置而不重写save方法的方法?在


Tags: 方法文档idstringindexsaveelasticsearchdoctype
1条回答
网友
1楼 · 发布于 2024-10-04 01:31:46

有几种分配id的方法:

你可以这样做

a = StudentDoc(meta={'id':1}, student_id=1, tags=['test'])
a.save()

像这样:

^{pr2}$

还要注意,在es1.5之前,人们可以specify a field作为文档_id(在您的例子中,它可能是{}),但这在1.5中已经被弃用,从那时起,您必须显式地提供一个ID,或者让ES为您选择一个ID。在

相关问题 更多 >