elastic search6 给已有索引添加属性时提示 mapping type is missing
时间: 2023-08-25 10:06:05 浏览: 227
在 Elasticsearch6 中,一个索引可以有多个类型。但是在 Elasticsearch7 中,一个索引只能有一个类型。如果你正在使用 Elasticsearch7 或更高版本,则不能再使用多个类型。
如果你使用 Elasticsearch6,那么在索引中添加新属性时,可能会出现 "mapping type is missing" 的错误。这是因为 Elasticsearch6的索引需要显式指定文档类型,而且一旦指定了类型,就不能再修改它。
要解决这个问题,你需要使用 PUT Mapping API 来更新已有的映射。例如,假设你有一个名为 "my_index" 的索引,你想向其中添加一个名为 "new_field" 的新属性,你可以执行以下命令:
```
PUT my_index/_mapping/doc
{
"properties": {
"new_field": {
"type": "text"
}
}
}
```
这将给 "doc" 类型添加一个新的 "text" 类型的属性 "new_field"。请注意,在 Elasticsearch6 中,"doc" 是默认的文档类型名称。如果你的索引中有其他文档类型,请将 "doc" 替换为你要更新的文档类型名称。
相关问题
elastic search6 怎么给已有索引添加属性
在 Elasticsearch 中,已有索引的属性可以通过更新映射(mapping)来添加。具体步骤如下:
1. 使用 PUT 请求更新索引的映射,例如:
```
PUT /your_index/_mapping
{
"properties": {
"new_field": {
"type": "text"
}
}
}
```
其中,`your_index` 为要更新的索引名称,`new_field` 为要添加的新属性名,`text` 为新属性的数据类型。
2. 如果新属性需要设置分词器(Analyzer),可以在映射中指定,例如:
```
PUT /your_index/_mapping
{
"properties": {
"new_field": {
"type": "text",
"analyzer": "standard"
}
}
}
```
其中,`standard` 为要使用的分词器名称,可以根据需要进行修改。
注意:更新映射可能会导致数据重新索引,所以在生产环境中需要谨慎操作。
mapping type is missing
"mapping type is missing" 是指在 Elasticsearch 中的索引中没有指定映射类型。在 Elasticsearch 6.x 及以上版本中,不再需要指定映射类型,只需要指定索引和文档类型。
以前的版本中,可以为不同的文档类型定义不同的映射类型,但在6.x 及以上版本中,只能为索引指定一个默认的映射。
这个改变是为了简化 Elasticsearch 的数据模型并提高性能。现在,我们只需要关注索引和文档的类型,不需要再为每个文档类型分别定义映射。这样做可以减少存储空间和内存的消耗,并且简化了查询过程。
这意味着,如果你遇到了"mapping type is missing" 的错误提示,你需要检查你的代码是否还在使用过时的映射类型定义。你可以通过检查你的索引、文档类型和映射是否正确来解决这个问题。
如果你使用的是6.x及以上版本的 Elasticsearch,你只需要关注索引和文档类型,不需要再指定映射类型。