学校建设网站的目的和意义百家号优化
索引是数据的载体,存储了文档和映射的信息
索引是具有相同结构的文档的合集体。
设置索引,不仅仅是设置索引名字,还有索引的一些配置,比如:分片和副本,刷新频率,搜索结果的最大参数,索引映射和别名。
{// 索引的设置部分"settings": {// 索引级别的设置"index": {// 设置索引的主分片数量,通常在创建索引后不可更改"number_of_shards": 3,// 设置每个主分片的副本数量,可以在创建索引后动态调整"number_of_replicas": 1,// 设置索引的刷新频率,这里设置为每秒刷新一次"refresh_interval": "1s",// 设置搜索结果的最大窗口大小,限制单次搜索返回文档的数量"max_result_window": 10000}},// 索引的映射部分,定义文档字段的类型和属性"mappings": {"properties": {// 定义一个文本字段,用于全文搜索"title": {"type": "text",// 子字段,用于不分词的精确匹配"fields": {"keyword": {"type": "keyword"}}},// 定义另一个文本字段,用于存储文章内容"content": {"type": "text"},// 定义日期字段,用于存储发布日期"publish_date": {"type": "date"},// 定义关键字字段,用于存储作者名字,通常用于过滤和聚合"author": {"type": "keyword"}}},// 索引的别名部分,为索引设置一个或多个别名"aliases": {// 设置一个别名,可以通过别名来操作索引"myindexalias": {}}
}
动态设置(修改)索引设置
// 动态设置刷新间隔
PUT /my_index/_settings
{"index": {"refresh_interval": "1s" // 每秒刷新一次}
}// 动态设置副本数量
PUT /my_index/_settings
{"index": {"number_of_replicas": 2 // 更改副本数量为2}
}
索引别名
- 无缝滚动索引(在线无缝切换索引)
索引别名可以用来实现无缝滚动索引,这意味着可以在不中断服务的情况下替换旧的索引。例如,你可以每天创建一个新的索引来存储当天的数据,并使用别名来指向当前的索引。当需要切换到新索引时,只需将别名重新指向新的索引即可。 - 多索引检索
将多个索引A和B别名设置成相同的C,那么使用这个索引别名C就能应用到两个A和B索引上,相当于一个视图。
索引模板
解决的问题:
- 数据量非常大,需要对索引的生命周期进行管理,要按照日期划分索引,这就要求多个索引的mapping相同,那么每次创建mapping都很麻烦。
- 数据业务中有多个相同mapping的索引(因为想要跨索引查询),那么如何保证这些mapping相同呢?
索引模板的定义
普通完全模板
{"index_patterns": ["myindex-*"], // 匹配所有以myindex-开头的索引"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"timestamp": {"type": "date"},"user": {"type": "keyword"},"message": {"type": "text"}}},"aliases": {"myindex-read": {}, // 为索引创建一个别名"myindex-write": {} // 为索引创建另一个别名}
}
组件模板
组件模板 - 设置
{"template": {"settings": {"number_of_shards": 3}},"priority": 10
}```
这个组件模板定义了索引的分片数,并且设置了优先级为10。**组件模板 - 映射**
```PUT _component_template/component_mappings_example
{"template": {"mappings": {"properties": {"user": {"type": "keyword"}}}}
}
这个组件模板定义了索引的映射,包括一个user字段。
组件模板 - 别名
{"template": {"aliases": {"myindex-read": {}}}
}
这个组件模板定义了一个别名myindex-read。
使用组件模板创建完全模板
现在,我们可以使用上面定义的组件模板来创建一个完全模板:
{"index_patterns": ["myindex-*"],"composed_of": ["component_settings_example", "component_mappings_example", "component_aliases_example"],"priority": 1
}