无法在弹性搜索上创建映射
Cannot create mapping on elasticsearch
我想在 elasticsearch 上创建一个索引,我想创建一个映射。
我对映射的理解是,这是插入数据以定义字段类型之前的一个可选步骤。
索引创建:
curl -X PUT "localhost:9200/idx5"
映射创建:
curl -X PUT "localhost:9200/idx5/_mapping" -H 'Content-Type: application/json' -d'
{
"properties": {
"element_type": {
"type": "keyword"
}
}
}
'
现在,我在尝试向索引中插入数据时出现此错误
[type] => illegal_argument_exception
[reason] => Rejecting mapping update to [idx5] as the final mapping would have more than 1 type: [_doc, doc]
如果我不创建映射,我没有错误。
有什么想法吗?
谢谢
** 编辑 **
弹性搜索版本:6.2.4
** 编辑 **
这是我尝试插入数据的方式:
curl -X POST http://localhost:9200/idx5/doc/ -H 'Content-Type: application/json' -d'{
"id" : "1234",
"element_type": "TYPE1",
"title" : "test"
}
'
由于您使用的是 Elasticsearch 版本 6.X,它在单个索引中不支持多个 type
,默认情况下,如果您不指定它会创建 _doc
类型,因为您在创建索引时没有指定,它将使用 _doc
类型。
现在,在索引而不是使用 _doc
时,您使用的是 doc
,这意味着 Elasticsearch 认为您正在为索引使用另一个 type
名称,因为它不受支持 Elastic 抛出错误(甚至在索引中指定类型的名称,在本例中为 doc
和 _doc
)。
只需将索引文档请求中的 URL 替换为 http://localhost:9200/idx5/_doc/
即可。
请阅读 elastic doc for removal of type 什么版本有什么变化。 并且特定于 Elastic 6.X
Indices created in 6.x only allow a single-type per index. Any name
can be used for the type, but there can be only one. The preferred
type name is _doc, so that index APIs have the same path as they will
have in 7.0: PUT {index}/_doc/{id} and POST {index}/_doc
我想在 elasticsearch 上创建一个索引,我想创建一个映射。
我对映射的理解是,这是插入数据以定义字段类型之前的一个可选步骤。
索引创建:
curl -X PUT "localhost:9200/idx5"
映射创建:
curl -X PUT "localhost:9200/idx5/_mapping" -H 'Content-Type: application/json' -d'
{
"properties": {
"element_type": {
"type": "keyword"
}
}
}
'
现在,我在尝试向索引中插入数据时出现此错误
[type] => illegal_argument_exception
[reason] => Rejecting mapping update to [idx5] as the final mapping would have more than 1 type: [_doc, doc]
如果我不创建映射,我没有错误。
有什么想法吗?
谢谢
** 编辑 **
弹性搜索版本:6.2.4
** 编辑 **
这是我尝试插入数据的方式:
curl -X POST http://localhost:9200/idx5/doc/ -H 'Content-Type: application/json' -d'{
"id" : "1234",
"element_type": "TYPE1",
"title" : "test"
}
'
由于您使用的是 Elasticsearch 版本 6.X,它在单个索引中不支持多个 type
,默认情况下,如果您不指定它会创建 _doc
类型,因为您在创建索引时没有指定,它将使用 _doc
类型。
现在,在索引而不是使用 _doc
时,您使用的是 doc
,这意味着 Elasticsearch 认为您正在为索引使用另一个 type
名称,因为它不受支持 Elastic 抛出错误(甚至在索引中指定类型的名称,在本例中为 doc
和 _doc
)。
只需将索引文档请求中的 URL 替换为 http://localhost:9200/idx5/_doc/
即可。
请阅读 elastic doc for removal of type 什么版本有什么变化。 并且特定于 Elastic 6.X
Indices created in 6.x only allow a single-type per index. Any name can be used for the type, but there can be only one. The preferred type name is _doc, so that index APIs have the same path as they will have in 7.0: PUT {index}/_doc/{id} and POST {index}/_doc