web-dev-qa-db-ja.com

ElasticSearch 5.6では「_doc」マッピングタイプ名は受け入れられません

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の場合と同じです。

クラスター設定など、何か不足していますか?

15
AdrienF

リンクしたドキュメントはmasterバージョンです。同じドキュメントの6.1または5.6バージョンでは、_docが優先名であるという言及はありません。これはおそらく、_docをマッピングタイプ名として使用する機能が将来の6.xバージョンに付属することを意味します。

13
AdrienF