ElasticSearch 5.6の単一タイプのインデックスの例を見て、マッピングタイプの削除の準備をしています。具体的には、docker.elastic.co/elasticsearch/elasticsearch:5.6.5
イメージを使用してDockerでローカルに実行されている新しいクラスターで、ElasticSearch タイプの削除に関するページ から最初の例を実行しています。
リンク先のセクションから最初の例を実行します:
PUT localhost:9200/users
{
"settings": {
"index.mapping.single_type": true
},
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text"
},
"user_name": {
"type": "keyword"
},
"email": {
"type": "keyword"
}
}
}
}
}
次のエラーが表示されます。
{
"error": {
"root_cause": [
{
"type": "invalid_type_name_exception",
"reason": "mapping type name [_doc] can't start with '_'"
}
],
"type": "invalid_type_name_exception",
"reason": "mapping type name [_doc] can't start with '_'"
},
"status": 400
}
名前の先頭にアンダースコアが付いているフィールドは、一般にES内部用に予約されていると見なされることを理解しています。しかし、私は_doc
がバージョン5.6
で始まる特別なケースと見なされると想定していました。
6.xで作成されたインデックスは、インデックスごとに単一タイプのみを許可します。タイプには任意の名前を使用できますが、存在できるのは1つだけです。優先される型名は_docであるため、インデックスAPIのパスは7.0の場合と同じです。
クラスター設定など、何か不足していますか?
リンクしたドキュメントはmaster
バージョンです。同じドキュメントの6.1
または5.6
バージョンでは、_doc
が優先名であるという言及はありません。これはおそらく、_doc
をマッピングタイプ名として使用する機能が将来の6.x
バージョンに付属することを意味します。