如何定义动态/覆盖elasticsearch中的_default_映射?

时间:2013-12-05 13:30:13

标签: elasticsearch

用例:

  1. 索引/索引将从模板动态构建,以便 它会选择一些自定义设置(分片数/副本/等)。
  2. 动态生成类型及其映射,为它们启用所有时间戳 &安培; ttl字段。还为所有类型定义相同的父类型,但 父类型本身(我知道它的名字)。

    {
       "template": "*",
    
       "settings": {
          ...................
       },
    
       "mappings": {
    
          "_default_": {
             "_parent": {
                "type": "ParentType"
             },
             "_timestamp": {
                "enabled": true,
                "store": true
             },
             "_ttl": {
                "enabled": true
             }
          }
    
       }
    }
    
  3. 如何禁用ParentType类型本身的_parent字段?

1 个答案:

答案 0 :(得分:1)

在对文档进行了大量挖掘之后,我发现您可以使用此工作覆盖__default__映射。

{
   "mappings": {
      "_default_": {
         "_parent": {
             "type": "my_parent_type" # 1
         }
      },
      "my_parent_type": {
          "_parent": {
              "type": "_dummy" # 2
          }
      }
   }
}

1)此映射配置将由包括my_parent_type类型在内的所有类型继承。第2步说明如何覆盖父类型_parent元字段。

2)我在https://www.elastic.co/guide/en/elasticsearch/reference/current/default-mapping.html发现,当您为相关类型提供特定的映射时,您可以覆盖__default__中的任何映射。

在这种情况下,我们将_parent my_parent_type映射分配给您的索引中不必存在的_dummy父类型。

注意:ElasticSearch 2.x文档声明:

  

_parent.type设置只能指向尚不存在的类型。这意味着类型在创建后不能成为父类型。

出于这个原因,您必须确保索引第一个,一个非my_parent_type类型的文档,否则您将获得索引时间。

我希望这会有所帮助。