加载中

对象字段类型

JSON 文档本质上是分层的:文档可能包含内部对象,而这些内部对象本身又可能包含内部对象。

 PUT my-index-000001/_doc/1 { <1>
  "region": "US",
  "manager": {
    "age":     30,
    "name": {
      "first": "John",
      "last":  "Smith"
    }
  }
}
  1. 外部文档也是一个 JSON 对象。
  2. 它包含一个名为 manager 的内部对象。
  3. 而这个内部对象又包含一个名为 name 的内部对象。

内部而言,该文档被索引为简单的、扁平的键值对列表,类似于这样:

{
  "region":             "US",
  "manager.age":        30,
  "manager.name.first": "John",
  "manager.name.last":  "Smith"
}

上述文档的显式映射可能如下所示:

 PUT my-index-000001 {
  "mappings": {
    "properties": {
      "region": {
        "type": "keyword"
      },
      "manager": {
        "properties": {
          "age":  { "type": "integer" },
          "name": {
            "properties": {
              "first": { "type": "text" },
              "last":  { "type": "text" }
            }
          }
        }
      }
    }
  }
}
  1. 顶级映射定义中的属性。
  2. manager 字段是一个内部 object 字段。
  3. manager.name 字段是 manager 字段内的一个内部 object 字段。

您不必显式将字段 type 设置为 object,因为这是默认值。

object 字段接受以下参数:

动态
是否将新的 properties 动态添加到现有对象。接受 true(默认)、runtimefalsestrict
启用
是否解析和索引(true,默认)给对象字段的 JSON 值,或者完全忽略(false)。
subobjects
该对象是否可以包含子对象(true,默认)或不可以(false)。如果不行,带有点的字段名称将被视为叶子节点,否则它们的字段名称将被展开为其对应的对象结构。
properties
对象内的字段,可以是任何 数据类型,包括 object。可以向现有对象添加新属性。
重要提示

如果您需要索引对象数组而不是单个对象,请先阅读 Nested

© . This site is unofficial and not affiliated with Elasticsearch BV.