用于嵌套的 ElasticSearch 动态模板

Mic*_*iez 1 elasticsearch

我尝试为嵌套对象创建动态模板。

这是要索引的文档:

{
    "title": "My title",
    "attributes": {
        "color": {
            "id": 42,
            "label": "red"
        },
        "material": {
            "id": 43,
            "label": "textile"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的模板,没有成功

{
  "dynamic": "false",
  "dynamic_templates": [
    {
      "attributes": {
        "path_match": "attributes",
        "mapping": {
          "type": "nested"
        }
      }
    },
    {
      "attributes_nested": {
        "path_match": "attributes.*",
        "mapping": {
          "properties": {
            "id": {
              "type": "integer"
            },
            "value": {
              "type": "string"
            }
          }
        }
      }
    }
  ],
  "properties": {
    "title": {
      "type": "string"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够对attributes.color.id和attributes.material.id进行聚合

Mic*_*iez 6

没关系,问题是我有

{ "dynamic": false}
Run Code Online (Sandbox Code Playgroud)

正确的映射是

{
  "dynamic": "false",
  "dynamic_templates": [
    {
      "attributes_nested": {
        "path_match": "attributes.*",
        "mapping": {
          "properties": {
            "id": {
              "type": "integer"
            },
            "value": {
              "type": "string"
            }
          }
        }
      }
    }
  ],
  "properties": {
    "title": {
      "type": "string"
    },
    "attributes": {
      "type": "nested",
      "dynamic": true
    }
  }
}  
Run Code Online (Sandbox Code Playgroud)