您现在的位置是:主页 > news > 广州知名网站建设网页设计服务/网站优化公司开始上班了
广州知名网站建设网页设计服务/网站优化公司开始上班了
admin2025/5/13 9:22:44【news】
简介广州知名网站建设网页设计服务,网站优化公司开始上班了,网站栏目设计内容,网站备案背景一、前言 索引模板,简而言之,是一种复用机制。当新建一个 Elasticsearch 索引时,自动匹配模板,完成索引的基础部分搭建。注意:模板只在创建索引时应用。更改模板不会对现有索引产生影响。主要为如下几个部分ÿ…
广州知名网站建设网页设计服务,网站优化公司开始上班了,网站栏目设计内容,网站备案背景一、前言
索引模板,简而言之,是一种复用机制。当新建一个 Elasticsearch 索引时,自动匹配模板,完成索引的基础部分搭建。注意:模板只在创建索引时应用。更改模板不会对现有索引产生影响。主要为如下几个部分ÿ…
一、前言
索引模板,简而言之,是一种复用机制。当新建一个 Elasticsearch 索引时,自动匹配模板,完成索引的基础部分搭建。注意:模板只在创建索引时应用。更改模板不会对现有索引产生影响。主要为如下几个部分:
{"order": 0, // 模板优先级"template": "sample_info*", // 模板匹配的名称方式"settings": {...}, // 索引设置"mappings": {...}, // 索引中各字段的映射定义"aliases": {...} // 索引的别名
}
二、索引模板样例
{"order": 0,"template": "sample_info*","settings": {"index": {"number_of_shards": "64","number_of_replicas": "1"}},"mappings": {"info": {"dynamic_templates": [{"string_fields": {"mapping": {"analyzer": "only_words_analyzer","index": "analyzed","type": "string","fields": {"raw": {"ignore_above": 512,"index": "not_analyzed","type": "string"}}},"match_mapping_type": "string","match": "*"}}],"properties": {"user_province": {"analyzer": "lowercase_analyzer","index": "analyzed","type": "string","fields": {"raw": {"ignore_above": 512,"index": "not_analyzed","type": "string"}}}}}},"aliases": {}
}
说明:
"order"
字段:有时候,一个模板可能绝大部分符合新建索引的需求,但是局部需要微调,此时,如果复制旧的模板,修改该模板后,成为一个新的索引模板即可达到我们的需求,但是这操作略显重复。此时,可以采用模板叠加与覆盖来操作。模板的优先级是通过模板中的 order 字段定义的,数字越大,优先级越高。如果存在多个模板,其order相同,那其顺序能保证吗?答案是不能保证,因为对所有模板进行排序的过程中,如果order相同,其顺序无法得到保证。"template"
字段:定义的是该索引模板所应用的索引情况。如 "template": "sample_info*" 所表示的含义是,当新建索引时,所有以 sample_info 开头的索引都会自动匹配到该索引模板。利用该模板进行相应的设置和字段添加等。"settings"
字段:索引模板中的 setting 部分一般定义的是索引的主分片、拷贝分片、刷新时间、自定义分析器等。"mappings"
字段:主要是一些说明信息,大致又分为_all、_source、prpperties这三部分:
(1) _all:主要指的是AllField字段,我们可以将一个或多个都包含进来,在进行检索时无需指定字段的情况下检索多个字段。设置“_all" : {"enabled" : true}
(2) _source:主要指的是SourceField字段,Source可以理解为ES除了将数据保存在索引文件中,另外还有一份源数据。_source字段在我们进行检索时相当重要,如果在{"enabled" : false}情况下默认检索只会返回ID, 你需要通过Fields字段去到索引中去取数据,效率不是很高。但是enabled设置为true时,索引会比较大,这时可以通过Compress进行压缩和inclueds、excludes来在字段级别上进行一些限制,自定义哪些字段允许存储。
(3) properties:这是最重要的步骤,主要针对索引结构和字段级别上的一些设置。
三、创建模板
PUT _template/template_1
{"index_patterns": ["te*", "bar*"],"settings": {"number_of_shards": 1},"mappings": {"_doc": {"_source": {"enabled": false},"properties": {"host_name": {"type": "keyword"},"created_at": {"type": "date","format": "EEE MMM dd HH:mm:ss Z yyyy"}}}}
}
四、查看模板
# 已知模板名,查看
GET /_template/template_1# 通过模糊匹配得到多个模板信息
GET /_template/temp*# 批量查看模板
GET /_template/template_1,template_2
五、验证模板是否存在
HEAD _template/template_1
六、删除模板
DELETE /_template/template_1
七、索引调优
PUT _template/template_topic
{"template": "topic*","order":1,"settings": {"index":{"refresh_interval":"60s","number_of_shards":"3" },"translog":{"sync_interval":"30s","durability":"async","flush_threshold_size":"1g"},"merge": {"policy.floor_segment": "100mb","policy.max_merged_segment": "2g","scheduler.max_thread_count": "1"},"number_of_replicas":1},"mappings": {"doc":{"dynamic":false,"_field_names": {"enabled": false},"properties":{"@timestamp": {"type": "date"},"@version": {"type": "keyword","norms": false,"doc_values":false,"index": false},"message": {"type": "text","norms": false,"index_options": "docs"}}}}
}
说明:
对于索引调优,上述template能够获得较好的索引写入速率。
- refresh_interval默认为1, 增加到60s。
- number_of_shards主分片数默认为5,一个主分片的大小为30G比较合适,对于一天有90G的数据,设置为3比较合适。
- 对于translog的落盘设置,设置为异步,阈值1g,落盘间隔默认为5s, 可增加为30s。
- 对于merge的设置,segments_per_tier 设置为20 ,可以带来更少的合并,
- max_merged_segment 默认为5g, 设置为2g,获得更少合并和,减少难度大的合并
- max_thread_count 当使用HDD时设为1,使用SSD时使用默认值不需要设置
- floor_segment设置为100mb,减少合并次数
对于mapping的设值,
- 禁用 dynamic , 禁用_fields_names,
- 字段关闭doc_value,禁止列存储,写入更快
- 根据字段属性,来配置:例如,@version, 不需要索引, index设置为false, doc_value设为false, norms设置为false。哪些字段不需要索引,就设置index为false, 不需要评分,norms设置为false,
- 如果不需要term在哪查到,设置索引等级index_options为docs, 默认offsets 包含id, 偏移量, 频率等信息。 字段设置需要根据业务调整,比如不需要fields子字段,默认text会有keyword子字段
八、参考文章
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/indices-templates.html
Index Template 和 Dynamic Template:https://learnku.com/articles/35702