当前位置: 首页 > 面试题库 >

使用elasticsearch dsl python DocType将现有字段用作_id

易宏阔
2023-03-14
问题内容

我上课,尝试在elasticsearch中将其设置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

我受限制idMeta但无法正常工作。

我得到解决方案作为覆盖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为您挑选一个。



 类似资料:
  • 问题内容: 我有一个已经存在的表,该表的字段应该唯一,但不是。我只知道这一点,因为在表中创建了一个条目,该条目具有与另一个已经存在的条目相同的值,这导致了问题。 如何使该字段仅接受唯一值? 问题答案: 对于MySQL 5.7.4或更高版本: 从MySQL 5.7.4开始,ALTER TABLE的IGNORE子句被删除,使用它会产生错误。 因此,请确保先删除重复的条目,因为不再支持IGNORE关键字

  • 问题内容: 我在AndroidStudio 1.2.1.1和Gradle 1.2.3中使用了ProGuard。 My Gradle的发布版本的配置如下: 我希望混淆类的私有字段。 到目前为止,这是我的proguard配置文件(经过多次尝试): 但是在从AndroidGuard 反编译后,我最终得到了: 我知道这种混淆的使用是有限的,但是我想由ProGuard重命名。怎么做? 这是refcard。

  • 我需要从Spring应用程序向MongoDB实例抛出文档,在那里我可以利用其数据包中的MongoTemplate。 但是Spring将那些instances字段作为MongoDB文档id,导致数据库中的id重复,从而防止了重复的实例。 null 通过阅读这个问题,我发现字段对于Spring是必需的,我需要添加一个字段。 这就是我将文档插入集合的方式: 我对ByteBuddy完全陌生(我认为这可能是

  • 问题内容: 我们有两个表。第一个包含名称(varchar)字段。第二个包含一个字段,该字段引用第一个表中的名称字段。对于与该名称关联的每一行,将重复第二个表中的此外键。通常不建议使用varchar / string字段作为两个表之间的联接吗?何时可以将字符串字段用作联接字段? 问题答案: 当然可以使用varchar作为键字段(或简单地将其连接)。它的主要问题取决于您通常在varchar字段中存储的

  • 我把这三门课分别放在不同的文件中 我有下面的映射器 这目前仅映射lastName并起作用,我想将Book中的作者字符串映射为 我怎么能这么做?我在MapStruct文档中找不到任何东西。

  • 我在一个包含3000个文档的核心中有一个Solr索引。 我想基于唯一键PaperID修改整个核心中单个字段的值。 有没有人能为我指点一下...最诚挚的问候