elasticsearch ElasticSearch-索引模板和索引模式之间的区别是什么,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch ElasticSearch-索引模板和索引模式之间的区别是什么,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch ElasticSearch-索引模板和索引模式之间的区别是什么

elasticsearch ElasticSearch-索引模板和索引模式之间的区别是什么,elasticsearch,kibana,elasticsearch,Kibana,我在这里阅读了对我的问题的解释: 然而,我仍然不明白其中的区别。定义索引模式时,它根本不影响索引的创建吗?另外,如果我创建了一个索引,但它没有相应的索引模式,会发生什么?如何查看用于索引模式的映射,以便知道如何使用映射API进行更新 另一方面,文档说您可以通过单击“设置”然后单击“索引”选项卡来管理索引模式。我在看Kibana,没有看到任何设置选项卡。我可以通过“管理”选项卡查看索引模式,但在那里看不到任何设置选项卡一个ES功能,用于在匹配名称模式时触发新索引的创建。例如,假设我们创建以下索引

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

然而,我仍然不明白其中的区别。定义索引模式时,它根本不影响索引的创建吗?另外,如果我创建了一个索引,但它没有相应的索引模式,会发生什么?如何查看用于索引模式的映射,以便知道如何使用映射API进行更新

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

一个ES功能,用于在匹配名称模式时触发新索引的创建。例如,假设我们创建以下索引模板:

PUT _template/template_1
{
  "index_patterns": ["foo*"],
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    ...
  }
}
如您所见,只要我们想在名为(例如)
foo-44
的索引中为文档编制索引,而该索引不存在,ES就会使用该模板(设置+映射),以便自动创建
foo-44
索引

您可以随时更新索引模板,只需像上面那样放置一个新的设置/映射定义

一个(不要与您在上面看到的
索引模式
属性混淆,这是两个完全不同的东西)是一个Kibana特性,用于告诉Kibana索引是由什么组成的(所有字段、它们的类型等)。如果不创建索引模式,Kibana中就不会发生任何事情,您可以在
Management>索引模式中执行此操作

在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
字段,索引模式包含Kibana需要知道的以下信息:

  {
    "name": "name",
    "type": "string",
    "count": 0,
    "scripted": false,
    "searchable": true,
    "aggregatable": false,
    "readFromDocValues": false
  },

为什么Kibana甚至需要索引模式?难道它不能读取索引并显示它吗?当我问索引模式是否会影响索引创建时,我的意思是你是否可以像模板一样使用它,因为它们也与名称模式相对应?请参阅我更新的答案。基本上,索引模板和索引模式是两个不同的野兽,前者允许创建一个索引,而前者可以跨越多个索引我们仍然不在这个问题的底部-->Kibana如何应用映射?它是否查看索引映射,还是只考虑索引模式映射?索引映射与Kibana索引模式映射的优先规则是什么?何时应用映射-在查询时、显示时?简而言之,这两种映射之间的关系是什么?@Banoona Kibana索引模式中可用的字段是由索引模式名称标识的所有基础索引映射的结合。