【问题标题】:how to create dynamic mapping with elasticsearch_dsl如何使用 elasticsearch_dsl 创建动态映射
【发布时间】:2021-09-05 09:58:32
【问题描述】:

我必须创建应该看起来像这样的映射。

{
  "mappings": {
    "properties": {
        "product_id": {
            "type": "keyword"
        },
        "attributes": {
            "dynamic": "true",
            "properties": {}
        },
    }
}   

我通常会做这样的事情

class RetailerProductGeneric(Document):
    product_id = Keyword()
    

当我在文档中有动态架构时,我该怎么做?

我查看了文档,但对我来说不是很清楚。如下:

class Post(Document):
    title = Text()

    class Meta:
        all = MetaField(enabled=False)
        dynamic = MetaField('strict')

不确定这里发生了什么。有人可以解释一下怎么做吗?

编辑 1:

经过一番研究,我想出了如何创建动态映射。

class RetailerProductGeneric(Document):
    product_id = Keyword()
    attributes = Object(dynamic=True)

但现在预期的映射结果是这样的

  "attributes": {
    "dynamic": true,
    "type": "object"
  },

我要找的是

  "attributes": {
    "dynamic": "true",
    "properties": {}
  },

它有什么不同?如何按预期进行映射。

【问题讨论】:

  • 您需要哪些未包含在答案中的附加信息?
  • 我觉得我很好。非常感谢:) @Val
  • 请问您为什么添加赏金以引起更多关注?
  • 其实,如何获取动态模板映射是我最初的问题,我最终想通了。后来我对你回答的部分感到困惑。因为我在前 2 天没有收到任何回复,所以我开始赏金。
  • 再次感谢,如果需要更多信息,请随时提出新问题 ;-)

标签: elasticsearch elasticsearch-dsl


【解决方案1】:

好的开始!!

"attributes": {
  "dynamic": true,
  "type": "object"
},

和

"attributes": {
  "dynamic": "true",
  "properties": {}
},

其实是一模一样的。

当指定type: object 时,隐含properties: {}

当指定了properties: {} 而没有给出type 时,则隐含type: object。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2017-07-04
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多