带有通配符类型名称的索引模板

时间:2015-05-29 15:18:11

标签: elasticsearch

正如我们可以从官方文档中读到this section,我们可以在索引名称中设置通配符,我已经测试过并且工作正常,但是,有任何方法可以对类型名称执行相同操作?。例如

{
    "user": {
        "template": "user-*",
        "settings": {
            "index.number_of_shards": 5,
            "index.number_of_replicas": 1
        },
        "mappings": {
             "info": {
                 "dynamic": "strict",
                 "properties": {
                     ...
                 }
            }
            "more": {
                 "template": "more-*",
                 "_parent": {
                    "type": "info"
                 },
                 "dynamic": "strict",
                 "properties": {
                     ...
                 }
            }
        }
    }
}

这个例子不起作用,当然,但我希望还有另一种方法可以做到。

更新: 第二次近似

{
    "user": {
        "template": "user-*",
        "settings": {
            "index.number_of_shards": 5,
            "index.number_of_replicas": 1
        },
        "mappings": {
                "info": {
                    "dynamic": "strict",
                 "properties": {
                        ...
                    }
               }
            "more-*": {
                    "_parent": {
                    "type": "info"
                 },
                    "dynamic": "strict",
                 "properties": {
                        ...
                    }
               }
           }
       }
   }

但是当我尝试在“user-0”索引(/ user-0 / more-2015 /)中创建该类型“more-2015”时,获得下一个例外:

  

org.elasticsearch.ElasticsearchIllegalArgumentException:无法指定   如果没有配置父字段,则为parent

1 个答案:

答案 0 :(得分:0)

所以你想拥有完全相同的映射的不同类型?

From the doc

  

Elasticsearch中的类型表示一类类似的文档。类型由名称(例如user或blogpost)和映射组成。映射与数据库模式一样,描述了该类型文档可能具有的字段或属性,每个字段的数据类型 - 如字符串,整数或日期 - 以及这些字段应由Lucene索引和存储的方式

你不会有不同的类名,具有相同的结构。我是否在评论中说过,你不能在类型名称中使用通配符,因为它没有任何意义。

从我所看到的,你用年份作为维度。您是否考虑过每年有一个索引,以及您的类型信息&更多信息?