elasticsearch ElasticSearch:映射必需(非动态)字段,但有一个属性(“元数据”)动态
我想创建一个索引,其中包含一些表示文章的内容 文章由elasticsearch ElasticSearch:映射必需(非动态)字段,但有一个属性(“元数据”)动态,elasticsearch,mapping,elasticsearch,Mapping,我想创建一个索引,其中包含一些表示文章的内容 文章由标题,摘录,正文,出版日期和元组成。除Meta外,所有这些都是必需的。我不想设置其他属性 此外,我希望“meta”能够保存放入其中的任何数据 我尝试将文章中的动态参数设置为false,然后将元对象设置为true,但没有成功。(示例如下所示) (注意:我理解使用meta本身意味着数组的所有值都将是相同的数据类型,对此我没有意见。) TL:DR-如何定义一个映射,使某些属性成为必需的,但保留一个属性(元数组/对象)以供填充,同时防止任何不需要在元对
标题
,摘录
,正文
,出版日期
和元
组成。除Meta外,所有这些都是必需的。我不想设置其他属性
此外,我希望“meta
”能够保存放入其中的任何数据
我尝试将文章中的动态参数设置为false,然后将元对象设置为true,但没有成功。(示例如下所示)
(注意:我理解使用meta本身意味着数组的所有值都将是相同的数据类型,对此我没有意见。)
TL:DR-如何定义一个映射,使某些属性成为必需的,但保留一个属性(元数组/对象)以供填充,同时防止任何不需要在元对象之外设置的属性。这被证明是一个简单的错误,阻止了功能正确触发 使用下面的JSON,在初始文章映射中将dynamic属性设置为strict,将“meta-stash”dynamic属性设置为true,实际上确实提供了所需的功能 原来使用了
false
,而不是strict
,也禁止抛出异常,导致最初的混乱
因此,正如文件中所述
:将新字段动态添加到默认值true
:忽略新字段false
:如果遇到未知字段,则引发异常strict
这被证明是一个简单的错误,阻止了功能正确触发 使用下面的JSON,在初始文章映射中将dynamic属性设置为strict,将“meta-stash”dynamic属性设置为true,实际上确实提供了所需的功能 原来使用了
false
,而不是strict
,也禁止抛出异常,导致最初的混乱
因此,正如文件中所述
:将新字段动态添加到默认值true
:忽略新字段false
:如果遇到未知字段,则引发异常strict
好问题。你是否设法解决了这个问题;挑战博士?@mgaert是的,我在下面给出的答案中解决了这个问题。在本例中,将对象(在本文中)设置为dynamic strict,然后定义一个新属性“meta”,并将dynamic设置为true。这样做是需要标题、摘录和正文,还是只是防止对具有意外字段的文档编制索引?这样做是为了标题、摘录,和body required,允许您在meta中放置意外字段。问得好。你是否设法解决了这个问题;挑战博士?@mgaert是的,我在下面给出的答案中解决了这个问题。在本例文章中,将对象设置为dynamic strict,然后定义一个新属性“meta”,并将dynamic设置为true。这样做是需要标题、摘录和正文,还是只是防止对具有意外字段的文档编制索引?这样做是需要标题、摘录和正文,并允许您在meta中放置意外字段。
{
"mappings": {
"article": {
"type":"object",
"dynamic" : "false",
"properties": {
"title": {"type": "string"},
"excerpt": {"type": "string"},
"body": {"type": "string"},
"publish_date": {"type": "date"},
"meta": {
"type": "object"
"dynamic" : "true",
"properties": {
}
}
}
}
}
}
{
"mappings": {
"article": {
"type":"object",
"dynamic" : "strict",
"properties": {
"title": {"type": "string"},
"excerpt": {"type": "string"},
"body": {"type": "string"},
"publish_date": {"type": "date"},
"meta": {
"type": "object"
"dynamic" : "true",
}
}
}
}
}