正如我们可以从官方文档中读到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
答案 0 :(得分:0)
所以你想拥有完全相同的映射的不同类型?
Elasticsearch中的类型表示一类类似的文档。类型由名称(例如user或blogpost)和映射组成。映射与数据库模式一样,描述了该类型文档可能具有的字段或属性,每个字段的数据类型 - 如字符串,整数或日期 - 以及这些字段应由Lucene索引和存储的方式
你不会有不同的类名,具有相同的结构。我是否在评论中说过,你不能在类型名称中使用通配符,因为它没有任何意义。
从我所看到的,你用年份作为维度。您是否考虑过每年有一个索引,以及您的类型信息&更多信息?