ElasticSearch-索引模板和索引模式有什么区别

我在这里阅读了我的问题的解释:

https://discuss.elastic.co/t/whats-the-differece-between-index-pattern-and-

index-template/54948

但是,我仍然不明白区别。定义索引PATTERN时,它根本不会影响索引的创建吗?另外,如果我创建索引但没有相应的索引模式,会发生什么情况?我如何查看用于索引模式的映射,以便知道如何使用Mapping

API对其进行更新?

另外,文档说您可以通过单击“设置”然后单击“索引”选项卡来管理索引模式。我正在查看Kibana,但没有看到任何设置标签。我可以通过“管理”选项卡查看索引模式,但是那里没有任何设置选项卡

回答:

一个指数模板是用于触发每当一个名字模式匹配的新索引创建的ES功能。例如,假设我们创建了以下索引模板:

PUT _template/template_1

{

"index_patterns": ["foo*"],

"settings": {

"number_of_shards": 1

},

"mappings": {

...

}

}

如您所见,一旦我们想在名为(例如)的索引中为文档建立索引,foo-44而该索引不存在,则ES将使用该模板(设置+映射)来foo-44自动创建索引。

您可以随时通过简单地如上所述放置新的设置/映射定义来更新索引模板。

一个索引图案(不要与混淆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还存储了timestamp字段,即索引模式的名称(

)。它还为您定义的每个字段存储各种属性,例如,对于该name字段,索引模式包含Kibana需要知道的以下信息:

  {

"name": "name",

"type": "string",

"count": 0,

"scripted": false,

"searchable": true,

"aggregatable": false,

"readFromDocValues": false

},

以上是 ElasticSearch-索引模板和索引模式有什么区别 的全部内容, 来源链接: utcz.com/qa/435974.html

回到顶部