An 索引模板 https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html是一项 ES 功能,用于在名称模式匹配时触发新索引的创建。例如,假设我们创建以下索引模板:
PUT _template/template_1
{
"index_patterns": ["foo*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
...
}
}
正如您所看到的,一旦我们想要在名为 (e.g.) 的索引中对文档建立索引foo-44
并且该索引不存在,那么 ES 将使用该模板(设置 + 映射)来创建foo-44
自动索引。
您可以随时更新索引模板,只需像上面那样放置新的设置/映射定义即可。
An 指数模式 https://www.elastic.co/guide/en/kibana/current/index-patterns.html(不要与index-patterns
您在上面看到的属性(这是两个完全不同的东西)是 Kibana 的一个功能,用于告诉 Kibana 索引的组成部分(所有字段、它们的类型等)。如果不创建索引模式,Kibana 就不会发生任何事情,您可以在Management > Index Patterns
.
在 ES 中创建索引不会在 Kibana 中创建任何索引模式。同样,在 Kibana 中创建索引模式不会在 ES 中创建任何索引。
Kibana 需要索引模式的原因是它需要存储索引映射中可用的不同类型的信息。例如,假设您使用以下映射创建一个索引:
PUT my_index
{
"mappings": {
"doc": {
"properties": {
"timestamp": {
"type": "date"
},
"name": {
"type": "text"
}
}
}
}
}
那么您将在 Kibana 中创建的相应索引模式将具有以下内容:
GET .kibana/doc/index-pattern:16a98050-a53f-11e8-82ab-af0d48c6ddd8
{
"type": "index-pattern",
"updated_at": "2018-08-21T12:38:22.509Z",
"index-pattern": {
"title": "my_index*",
"timeFieldName": "timestamp",
"fields": """[{"name":"_id","type":"string","count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_index","type":"string","count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"_score","type":"number","count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_source","type":"_source","count":0,"scripted":false,"searchable":false,"aggregatable":false,"readFromDocValues":false},{"name":"_type","type":"string","count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":false},{"name":"name","type":"string","count":0,"scripted":false,"searchable":true,"aggregatable":false,"readFromDocValues":false},{"name":"timestamp","type":"date","count":0,"scripted":false,"searchable":true,"aggregatable":true,"readFromDocValues":true}]"""
}
}
如您所见,Kibana 还存储时间戳字段、索引模式的名称(可以跨越多个索引)。它还存储您定义的每个字段的各种属性,例如name
字段中,index-pattern 包含 Kibana 需要了解的以下信息:
{
"name": "name",
"type": "string",
"count": 0,
"scripted": false,
"searchable": true,
"aggregatable": false,
"readFromDocValues": false
},