1.elasticSearch-alias
1.1 别名的用途
- 在运行的集群中可以无缝的从一个索引切换到另一个索引
- 给多个索引分组 (例如, last_three_months)
- 给索引的一个子集创建 视图
1.2 别名查询
别名关系如下:
graph TD
索引-index-test1 --> 别名-alias-name
索引-index-test2 --> 别名-alias-name
1.将索引index-test1指向 别名alias-name
PUT /index-test1/_alias/test-alias
2.将索引index-test2指向 别名alias-name
PUT /index-test2/_alias/test-alias
- 查询哪些索引指向别名alias-name
GET /*/_alias/alias-name
{
"index-test1" : {
"aliases" : {
"alias-name" : { }
}
},
"index-test2" : {
"aliases" : {
"alias-name" : { }
}
}
}
4.查询index-test2指向哪个别名
GET /index-test2/_alias/*
{
"index-test2" : {
"aliases" : {
"alias-name" : { }
}
}
}
2.分页查询
分页查询分两步:
- 条件查询 2.scroll_id查询
1.条件查询
GET index-test/_search?scroll=1m
{
"query": {
"match": {
"filed":"ddd"
}
},
"size": 10,
"sort": {"@timestamp": {"order": "desc"}}
}
参数注解:scroll=1m表明结果缓存1分种,在1分钟内用scroll_id查询数据可以得到分页数据,超过一分钟无法查询到数据,得到异常错误
返回结果会有一个_scroll_id,在第二步使用这个值来查询数据
2.scroll_id查询
GET /_search/scroll
{
"scroll": "1m",
"scroll_id": "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFllWVXZFZUZyUlYtUnU5MzJFZDlMTGcAAAAAAAXV6RZnOEwwOEdYOFIxLTNyMjFULUtfUkN3"
}
一直用这个来查询,知道没有数据返回,说明已经全部查询出来
3.索引优化
3.1 关闭旧索引
当索引变得更老,目前没有人使用它,虽然我们可以删除它们,但想留着以防万一有人后面还想访问它们。
所以这个索引可以被关闭,但依旧会存在磁盘空间,不会占用其它的资源。而且重新打开一个索引要比从备份中恢复要快得多。
在关闭之前,我们需要去刷写索引来确保没有事务残留在事务日志中。(一个空白的事务日志会使得索引在重新打开时恢复得更快)
POST /logs_2021-07-*/_flush 清空索引的事务日志
POST /logs_2021-07-*/_close 关闭所有一月的索引
POST /logs_2021-07-*/_open 当你需要再次访问它们时,使用_open API来重新打开它们。
4.数据删除
4.1 数据过期
过去的数据,我们关注度不高,想要删除,直接删除整个索引
DELETE /log-2021* 即可删除所以2021的日志
删除整个索引比删除单个文档要更加高效:elasticsearch只需要删除整个文件夹。 如果删除单个文件的话,它只是标记删除,数据还在分片当中。
4.2 文档的删除和更新
段是不可改变的,所以不能把文档从旧的段中移除,也不能修改旧的段来进行反应文档的更新。取而代之的是,每一个提交点会包含一个.del文件,文件中会列出这些被删除的文档的段信息。
4.2.1 文档删除
当一个文档被 “删除” 时,它实际上只是在 .del 文件中被 标记 删除。一个被标记删除的文档仍然可以被查询匹配到, 但它会在最终结果被返回前从结果集中移除。
4.2.2 文档更新
文档更新也是类似的操作方式:当一个文档被更新时,旧版本文档被标记删除,文档的新版本被索引到一个新的段中。 可能两个版本的文档都会被一个查询匹配到,但被删除的那个旧版本文档在结果集返回前就已经被移除。
4.2.3 文档合并
在 段合并 , 我们展示了一个被删除的文档是怎样被文件系统移除的