Elasticsearch索引别名:管理与优化数据访问

news/2024/10/18 14:28:34/

索引别名是Elasticsearch提供的一项强大功能,它允许将一个或多个索引映射到一个易于记忆且可复用的名称,从而简化索引管理、支持数据迁移、优化查询性能以及实现数据过滤与路由。本文将详细阐述索引别名的创建与删除、配合数据过滤与数据路由的应用场景及示例。

索引别名的创建与删除

创建索引别名

首先,创建两个索引logs-1logs-2,并分别写入数据:

POST logs-1/_doc/10001
{"visittime": "10:00:00","keywords": "[世界杯]","rank": 18,"clicknum": 13,"id": 10001,"userid": "2982199073774412","key": "10001"
}POST logs-2/_doc/10002
{"visittime": "11:00:00","keywords": "[奥运会]","rank": 11,"clicknum": 2,"id": 10002,"userid": "2982199023774412","key": "10002"
}

然后,为这两个索引添加别名logs

POST /_aliases
{"actions": [{"add": {"index": "logs-1","alias": "logs"}},{"add": {"index": "logs-2","alias": "logs"}}]
}

或者使用通配符一次性为多个索引添加别名:

POST /_aliases
{"actions" : [{ "add" : { "index" : "logs*", "alias" : "logs" } }]
}

查看别名关联的索引

查询别名logs所包含的索引:

GET _alias/logs

删除索引别名

从索引logs-1中移除别名logs

POST /_aliases
{"actions" : [{ "remove": { "index" : "logs-1", "alias" : "logs" } }]
}

别名配合数据过滤

结合索引别名与数据过滤,可以创建类似数据库视图的效果,即在查询别名时自动应用预设的筛选条件,实现数据自动过滤:

POST /_aliases
{"actions": [{"add": {"index": "logs*","alias": "logs","filter": {"range": {"clicknum": {"gte": 10}}}}}]
}

现在,查询别名logs时,只会返回clicknum大于等于10的文档:

POST logs/_search
{"query": {"match_all": {}}
}

别名配合数据路由

索引别名还可以与数据路由结合,以控制数据写入和查询时的目标分片:

POST /_aliases
{"actions": [{"add": {"index": "logs-1","alias": "logs","routing": "1"}}]
}POST /_aliases
{"actions": [{"add": {"index": "logs-1","alias": "logs","search_routing": "1,2","index_routing": "2"}}]
}

当别名指向多个索引时,直接使用别名写入数据可能会导致错误,因为Elasticsearch无法确定具体的目标索引。为解决这个问题,可以指定一个索引作为写入索引:

POST /_aliases
{"actions": [{"add": {"index": "logs-1","alias": "logs","is_write_index": true}},{"add": {"index": "logs-2","alias": "logs"}}]
}

在上述示例中,is_write_indextrue表示使用别名logs写入数据时,目标索引为logs-1。如果需要切换写入至logs-2,只需将其is_write_index属性设置为true,同时将logs-1is_write_index属性设置为false即可。

总结,Elasticsearch的索引别名功能为索引管理和查询优化提供了极大便利。通过创建、删除别名,配合数据过滤与路由策略,可以灵活应对数据增长、迁移、查询优化等场景,提高系统的稳定性和查询性能。


http://www.ppmy.cn/news/1437716.html

相关文章

优维应用级数字化架构管理:让企业运维天堑变通途

在优维科技的产品视角中,数字化架构管理就像是一门精妙的艺术,它将上层应用模型的业务概念以可视化的方式呈现出来,使得业务逻辑和流程变得更加直观、清晰。我们将这样的管理方式理解为“给企业搭起一座桥梁”——在这座桥梁的搭建过程中&…

微信小程序连接蓝牙

准备工作: 1:需要一个蓝牙板子和串口软件(卖蓝牙板子的商家会提供),手机上需要蓝牙调试助手(为了测试蓝牙是否正常连接) 2:蓝牙板通过usb插入到电脑端 3:安装好串口调试…

VUE 打包后 动态修改 后台服务器地址

使用的是第三方 continew-admin 项目 在 continew-admin-ui 项目中 添加 config.json 到public 目录下 {"baseURL": "http://localhost:8000" } 在 request.ts 文件中 async function fetchConfig() {const response await fetch(/config.json);con…

STL Array、ForwardList源码剖析

STL Array、ForwardList源码剖析 参考文章: https://blog.csdn.net/weixin_45389639/article/details/121618243 array 源代码 template<typename _Tp,std::size_t _Nm> struct array {typedef _Tp value_type;typedef _Tp* pointer;typedef value_type* iterator;// Su…

js修改路由参数+vue——js基础

最近在写看板&#xff0c;要求执行某个操作后更改路由参数&#xff0c;方便用户保存地址以便于下次直接获取对应的数据。 比如&#xff1a;原地址&#xff1a;http://localhost:4200/tvType/out 执行某个操作后&#xff0c;地址变更为&#xff1a;http://localhost:4200/tvTyp…

React复习笔记

基础语法 创建项目 借助脚手架&#xff0c;新建一个React项目(可以使用vite或者cra&#xff0c;这里使用cra) npx create-react-app 项目名 create-react-app是React脚手架的名称 启动项目 npm start 或者 yarn start src是源文件index.js相当于Vue的main.js文件。整个…

MVC4自带的JS、CSS优化功能

方法: Application_Start事件中 或 类 BundleConfig中的RegisterBundles方法中 加入代码: BundleTable.EnableOptimizations true;//是否启用优化 说明: 所说的JS、CSS优化&#xff1a; 缓存&#xff1a;首次访问站点&#xff0c;JS和CSS文件会下载到浏览器缓存中&#…

commvault学习(6):备份oracle(包括oracle的安装)

1.环境 CS、MA&#xff1a;一台windows server2012 客户端&#xff1a;2台安装了oracle11g的windows server2008 1.1 windows server2008安装oracle11g &#xff08;1&#xff09;右击安装包内的setup&#xff0c;以管理员方式运行 &#xff08;2&#xff09;取消勾选接收安…