ElasticSearch 5.6中不接受"_doc"映射类型名称

Adr*_*enF 15 elasticsearch elasticsearch-5

我正在查看ElasticSearch 5.6上的单一类型索引的示例,以准备删除映射类型.具体来说,我正在运行ElasticSearch 页面中关于删除类型的第一个示例,在使用docker.elastic.co/elasticsearch/elasticsearch:5.6.5映像在Docker中本地运行的新集群上

运行我链接到的第一部分的第一个例子:

PUT localhost:9200/users
{
  "settings": {
    "index.mapping.single_type": true
  },
  "mappings": {
    "_doc": {
      "properties": {
        "name": {
          "type": "text"
        },
        "user_name": {
          "type": "keyword"
        },
        "email": {
          "type": "keyword"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

{
  "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
}
Run Code Online (Sandbox Code Playgroud)

我知道名称中带有前导下划线的字段通常被认为是为ES内部保留的; 但我假设这_doc将被视为一个从版本开始的特殊情况5.6,因为链接指南提到:

在6.x中创建的索引仅允许每个索引使用单一类型.任何名称都可以用于该类型,但只能有一个名称.首选类型名称为_doc,因此索引API具有与7.0中相同的路径

我错过了什么,例如群集设置?

Adr*_*enF 13

我链接的文件是master版本.在同一文件的版本6.15.6版本中,没有提及_doc是首选名称; 这可能意味着_doc将来6.x版本将使用作为映射类型名称的能力.

  • 你是对的 - 在6.2(https://github.com/elastic/elasticsearch/pull/27816)中将添加对`_doc`的支持,我们将使用它来简化每个索引的多种类型的迁移 (7认同)
  • 那应该用什么呢? (3认同)
  • @ChristopheRoussy你想要的任何东西 - 我一直在使用`doc`,这也是`elasticsearch_dsl` python库的默认设置. (2认同)
  • 我认为`doc`不适用于弹性支持7.x及更高版本,其中映射类型被完全删除,对吧?我们甚至可以选择兼容7.x和5.6吗? (2认同)
  • @chefarov re“我们什至有选择...” a,可能没有。只是必须以某种方式处理它...(包括我自己,因为我刚遇到这个问题...)。我本来希望使用_doc,但是现在会使用doc。当我开始使用Elastic> = 6.2时,我只需要更新代码以将_doc替换为_doc即可。并修复所有索引。 (2认同)