如何使用 elasticsearch_dsl 创建动态映射
how to create dynamic mapping with elasticsearch_dsl
我必须创建应该看起来像这样的映射。
{
"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": {}
},
这有什么区别?如何按预期进行映射。
好的开始!!
"attributes": {
"dynamic": true,
"type": "object"
},
和
"attributes": {
"dynamic": "true",
"properties": {}
},
实际上是一回事
指定type: object
时,隐含properties: {}
并且当指定 properties: {}
且未给出 type
时,则隐含 type: object
。
我必须创建应该看起来像这样的映射。
{
"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": {}
},
这有什么区别?如何按预期进行映射。
好的开始!!
"attributes": {
"dynamic": true,
"type": "object"
},
和
"attributes": {
"dynamic": "true",
"properties": {}
},
实际上是一回事
指定type: object
时,隐含properties: {}
并且当指定 properties: {}
且未给出 type
时,则隐含 type: object
。