elasticsearch ElasticSearch:映射必需(非动态)字段,但有一个属性(“元数据”)动态,elasticsearch,mapping,elasticsearch,Mapping" /> elasticsearch ElasticSearch:映射必需(非动态)字段,但有一个属性(“元数据”)动态,elasticsearch,mapping,elasticsearch,Mapping" />

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",
                }
            }
        }
    }
}