1、 引言
2、Elasticsearch模板是什么鬼?
2{
3 "index_patterns": ["te*", "bar*"],
4 "aliases" : {
5 "alias1" : {}}
6 "settings": {
7 "number_of_shards": 1
8 },
9 "mappings": {
10 "_source": {
11 "enabled": false
12 },
13 "properties": {
14 "host_name": {
15 "type": "keyword"
16 },
17 "created_at": {
18 "type": "date",
19 "format": "EEE MMM dd HH:mm:ss Z yyyy"
20 }
21 }
22 }
23}
index_patterns代表匹配的索引。
settings 指索引层面的设置。
可以设置索引层面的配置,包括:
- 分片数(number_of_shards)、
- 副本数(number_of_replicas)、
- 刷新频率(refresh_interval)
…..
3、Elasticsearch模板的基础操作
3.1 增
2...
3.2 删
3.3 改
3.4 查
4、Elasticsearch模板进阶实战
放了大招
。2{
3 "Value":123
4}
5
6GET sampleindex/_mapping
7
8
9PUT _template/sample_dynamic_template
10{
11 "index_patterns": [
12 "sample*"
13 ],
14 "mappings": {
15 "dynamic_templates": [
16 {
17 "handle_integers": {
18 "match_mapping_type": "long",
19 "mapping": {
20 "type": "integer"
21 }
22 }
23 },
24 {
25 "handle_date": {
26 "match": "date_*",
27 "unmatch": "*_text",
28 "mapping": {
29 "type": "date"
30 }
31 }
32 }
33 ]
34 }
35}
36
37DELETE sampleindex
38PUT sampleindex/_doc/1
39{
40 "Value":123,
41 "date_curtime":"1574494620000"
42}
43
44GET sampleindex/_mapping
-
index_patterns:对应待匹配的以”sample开头的“索引。 -
handle_integers:动态模板的名字,你可以自己定义。 -
match_mapping_type:被匹配的被重写的源数据类型。 -
match/unmatch:匹配字段类型。

5、常见问题
问题1:template和Mapping到底什么区别?
-
Mapping:
针对单一索引。
类似Mysql中的表结构定义,是所有数据存储到该索引的架构定义。
字段支持:1)静态明确定义、2)系统层面自动识别、3)动态匹配。 -
template:
针对一个或多个索引。
除了定义Mapping的全支持外,还可以指定Setting、别名等。
适合数据量大、灵活多变的业务场景。
问题2:模板里可以指定Mapping,那我们还需要Mapping做什么?
-
索引模板对于在多个索引创建映射时非常有用。 -
如果数据量少,业务场景单一,那只Mapping也能解决问题。
问题3:如果我想更新Mapping,更新模板可以吗?
-
一旦创建了索引,对索引模板的更新将不会影响该索引。更新模板仅适用于新索引。 -
同样,更新为dynamic_templates仅会影响索引中的新字段。
问题4:模板order起到什么作用?
-
其中B-template匹配到我单独设置的几个索引("logstash-B-tomcat-","logstash-B1-tomcat-","logstash-B2-server-*","logstash-B3-tomcat"), -
另外A-template匹配所有,我设置B-template的order比A-template高,是不是我那4个索引就会匹配到B-template呢?
2{
3 "order":1,
4 "index_patterns":["logstash-b-tomcat-*","logstash-b1-tomcat-*","logstash-b2-server-*","logstash-b3-tomcat-*"],
5 "settings":{
6 "number_of_shards":"5",
7 "number_of_replicas":"1",
8 "refresh_interval":"30s",
9 "translog.durability":"async"
10 }
11}
12
13PUT logstash-b-tomcat-1
14
15PUT _template/a-template
16{
17 "order":0,
18 "index_patterns":["*"],
19 "settings":{
20 "number_of_shards":"5",
21 "number_of_replicas":"0",
22 "refresh_interval":"30s",
23 "translog.durability":"async"
24 }
25}
6、小结
相比之下Mapping和别名优势如下:
-
Mapping有助于我们保持数据库结构的一致性,并为我们提供Elasticsearch丰富的数据类型以及更复杂的自定义Mapping和分析类型。 -
别名Alias对于最大限度地无需停服完成索引切换起到重要作用。
本文仅供学习!所有权归属原作者。侵删!文章来源: 铭毅天下Elasticsearch