动态和静态的弹性映射问题

Issue with elastic mapping both dynamic and static

我有弹性问题。我想在部分索引上同时进行动态和静态映射。

我做了如下映射:

{"settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
    "dynamic": false,
    "date_detection": false,
    "properties": {
      "id": {
        "type": "keyword"
      },
      "metadata": {
        "dynamic": false,
        "properties": {
          "time": {
            "properties": {
              "insert": {
                "type": "date"
              }
            }
          }
        }
      },
      "traits": {
        "properties": {
          "private": {
            "dynamic": true
          },
          "public": {
            "dynamic": true
          }
        }
      }
    }
  }
}

我收到以下错误:

无法解析映射[_doc]:没有为字段[private]指定类型

我错过了什么。我希望索引的 traits.private 部分是动态的,以便用户可以添加任何数据。

是否可以使用 elastic 或我遗漏了什么?

这是可能的,但您收到的错误消息是因为您还没有为 privatepublic 定义 object 类型。如果这样做,则可以成功创建索引:

PUT test
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
    "dynamic": false,
    "date_detection": false,
    "properties": {
      "id": {
        "type": "keyword"
      },
      "metadata": {
        "dynamic": false,
        "properties": {
          "time": {
            "properties": {
              "insert": {
                "type": "date"
              }
            }
          }
        }
      },
      "traits": {
        "properties": {
          "private": {
            "type": "object",       <--- add this
            "dynamic": true
          },
          "public": {
            "type": "object",       <--- add this
            "dynamic": true
          }
        }
      }
    }
  }
}