首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用elasticsearch python DocType将现有字段用作DocType

使用elasticsearch python DocType将现有字段用作DocType
EN

Stack Overflow用户
提问于 2016-07-22 19:27:10
回答 1查看 4.5K关注 0票数 7

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

弹性搜索。我指的是来自elasticsearch文档的持久化示例

代码语言:javascript
复制
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,但是它不起作用。

我获得了覆盖方法的解决方案,并实现了这一目标

代码语言:javascript
复制
def save(self, **kwargs):
    '''
    Override to set metadata id
    '''
    self.meta.id = self.student_id
    return super(StudentDoc, self).save(**kwargs)

我正在创建这个对象

代码语言:javascript
复制
>>> a = StudentDoc(student_id=1, tags=['test'])
>>> a.save()

在没有覆盖Meta方法的情况下,有直接从save设置的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-29 05:26:51

有几种分配id的方法:

你可以这样做

代码语言:javascript
复制
a = StudentDoc(meta={'id':1}, student_id=1, tags=['test'])
a.save()

如下所示:

代码语言:javascript
复制
a = StudentDoc(student_id=1, tags=['test'])
a.meta.id = 1
a.save()

还请注意,在ES1.5之前,可以使用指定字段作为文档_id (在您的示例中,它可能是student_id),但这在1.5中已被否决,从那时起,您必须显式提供一个ID,或者让我们为您选择一个ID。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38533990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档