【问题标题】:How can i change the _id for the document django elasticsearch dsl python如何更改文档 django elasticsearch dsl python 的 _id
【发布时间】:2021-03-22 04:26:49
【问题描述】:

对于 w 文档类,我想更改为 _id 曾经是 slug 或其他选项

@registry.register_document
class TestDocument(Document):
id = fields.IntegerField(attr='id', multi=True)

name = fields.TextField(
    analyzer=html_strip,
    fields={
        'raw': fields.TextField(analyzer='keyword'),
    }
)

built_area = fields.TextField(
    analyzer=html_strip,
    fields={
        'raw': fields.TextField(analyzer='keyword'),
    }
)
living_area = fields.TextField(
    analyzer=html_strip,
    fields={
        'raw': fields.TextField(analyzer='keyword'),
    }
)

project = fields.ObjectField(properties={
    'name': fields.TextField(),
    'pk': fields.TextField(),
})

这个thread 提到了元数据,但不起作用

【问题讨论】:

    标签: django elasticsearch elasticsearch-dsl elasticsearch-dsl-py


    【解决方案1】:

    正确的做法是使用文档函数generate_id

    def generate_id(self, object_instance):
        return self.project.id
    

    最终文件将是:

    ...
    project = fields.ObjectField(properties={
        'name': fields.TextField(),
        'pk': fields.TextField(),
    })
    
    def generate_id(self, object_instance):
        return self.project.id
    
    class Index:
        # Name of the Elasticsearch index
        name = 'typologies_test'
    

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 1970-01-01
      • 2016-06-23
      • 2019-11-20
      • 2012-10-13
      • 2016-11-26
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多