首页 > 解决方案 > 创建索引时,定义索引映射时'_doc'的意义何在?

问题描述

据我了解,在创建索引时,您可以通过定义映射来定义文档在该索引中将具有的字段

PUT person
{
  "mappings": {
    "properties": {
      "firstName":{"type":"text"},
      "secondName":{"type":"text"},
      "age":{"type":"integer"}
    }
  }
}

但我也发现查询有时是这样写的,_doc里面有一个映射

PUT person
{
  "mappings": {
    "_doc":{
      "properties": {
        "firstName":{"type":"text"},
        "secondName":{"type":"text"},
        "age":{"type":"integer"}
      }
    }
  }
}

推杆有什么作用_doc

标签: elasticsearch

解决方案


_doc第二个映射与 7.0 之前的映射定义松散相关。

而不是_doc它会包含type您的文档。话虽如此,第二个映射将在 7.0 w/oa 问题之前工作,如果您指定 ,则 >=7.0 include_type_name,即PUT person?include_type_name=true.

更多信息在这里:https ://www.elastic.co/blog/moving-from-types-to-typeless-apis-in-elasticsearch-7-0

所有这一切的想法是一个index应该只包含一个type文档,从而使第type一个变得多余,后来被弃用。


推荐阅读