带你读《Elastic Stack 实战手册》之26:——3.4.2.11.Index alias(2)

简介: 带你读《Elastic Stack 实战手册》之26:——3.4.2.11.Index alias(2)


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.11.Index alias(1) https://developer.aliyun.com/article/1230380


JSON 体内支持的参数包括必填参数和可选参数。

 

详情如下:

 

必填参数:

 

index

 

参数类型string支持通配符。如果indices没有指定,则该参数必须指定。


注意:不能向索引别名添加数据流。

 

indices

 

参数类型string数组,该数组内的索引将被执行相应的动作。如果index没有指定,则该参数必须指定。

注意事项与index参数相同。

 

alias

 

参数类型string为以逗号分隔或者通配符表示的索引,addremovedelete别名。如果

aliases没有指定,则该参数必须指定。

 

aliases

 

参数类型string array需要进行addremovedelete的索引别名组。如果alias没有指定,则该参数必须指定。

 

可选参数:

 

filter

 

query object查询对象体,绑定了过滤查询的别名。如果指定,使用别名进行空查询,将只返回满足过滤条件的文档。

 

is_hidden

 

参数类型bool值,默认值为false如果设置为true使用通配符表达式别名进行搜索排除,该别名关联的数据将查询不到;除非在请求中使用expand_wildcards参数重写。对于共享同一个别名的所有索引,必须将此属性设置为相同的值。


must_exist

 

参数类型bool值,默认值为false,如果设置为ture,移除别名时,该别名必须存在。

 

is_write_index

 

参数类型bool值,默认值为false如果设置为true,则可以直接使用该别名对关联的索引进行数据写入或者配置修改等操作;若别名绑定多个索引,则只能存在一个is_write_index值为

true的绑定。注意:在同一个索引is_hiddenis_write_index不能同时设置为true;当别名只绑定一个索引时无需现实设定该值为true,该别名具有写权限,但是当别名再次绑定另外一个索引,则别名的写权限取消,除非现实指定is_write_index的值为true

 

routing

 

参数类型string,自定义值作为路由计算值,将操作路由到对应的分片上。

 

index_routing

 

参数类型string,自定义值作为路由计算值,将写入操作路由到对应的分片上。

 

search_routing

 

参数类型string,自定义值作为路由计算值,将查询操作路由到对应的分片上。

 

别名创建与修改示例

 

假设已经存在表user1user2为他们绑定别名,示例子如下:


#为 users1 表创建 index-alias-name1 别名
PUT /users1/_alias/index-alias-name1
#为 users1,users2 表创建 index-alias-name2 别名
PUT /users1,users2/_alias/index-alias-name2
#为 users 开头的索引创建 index-alias-name3别名
PUT /users*/_alias/index-alias-name3
#为 users1 索引添加具有路由和过滤功能的别名 routing-filter-index-alias
PUT users1/_alias/routing-filter-index-alias
{
  "routing" : "12",
  "filter" : {
    "term" : {
      "user_id" : 12
    }
  }
}
#为 users1 索引添加路由别名routing-index-alias,路由计算值为12
PUT users1/_alias/routing-index-alias
{
  "routing" : "12"
}
#为 users1 索引添加过滤别名filter-index-alias,过滤 user_id 为12
PUT users1/_alias/filter-index-alias
{
  "filter" : {
    "term" : {
      "user_id" : 12
    }
  }
}

别名创建成功之后,如果别名与索引的关系,为一个别名只对应一个索引,或者有一个绑定关系的 is_write_index (后文会介绍)值为 true ;那么我们可以通过别名往索引写如数据。


#通过别名,写入数据
PUT index-alias-name1/_bulk?refresh=true
{"index":{}}
{"user_id":"tom123456-user1"}
#通过路由别名,写入数据
PUT routing-index-alias/_bulk?refresh=true
{"index":{}}
{"user_id":"kimchy123456-routing"}
#通过索引,写入数据
PUT users2/_bulk?refresh=true
{"index":{}}
{"user_id":"kimchy123456-user2"}
{"index":{}}
{"user_id":"12"}

插入数据后可以通过别名或者索引查询


#以下三条查询语句的结果是等价的,返回2条数据
GET index-alias-name1/_search
GET users1/_search
GET routing-index-alias/_search
#以下三条查询语句的结果是等价的(如果没有其他 users 开头的索引),返回四条数据
GET users1,users2/_search
GET users*/_search
GET index-alias-name2/_search
#查询 user2 的索引,返回2条数据
GET users2/_search
#返回值为空,因为索引 users1 插入的文档没有 user_id 值为2的
GET filter-index-alias/_search
# 返回值为一条,因为索引 users2 有一条 user_id 值为2的文档
GET index-alias-name3/_search

批量创建索引别名示例

 

批量创建索引别名,即使用POST /_aliases中定义多个action。为test1test2索引绑定一个名称为alias1的别名。

POST /_aliases
{
  "actions" : [
    { "add" : { "index" : "test1", "alias" : "alias1" } }
    { "add" : { "index" : "test2", "alias" : "alias1" } }
  ]
}

重命名别名

 

如果我们需要对一个索引进行别名替换,只需要在同一个 API 中简单的先remove掉旧别名,然后绑定新的别名即可;该操作为原子型操作,无需担心别名在短时间内不指向索引


POST /_aliases
{
  "actions" : [
    { "remove" : { "index" : "test1", "alias" : "alias1" } },
    { "add" : { "index" : "test1", "alias" : "alias2" } }
  ]
}



《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.11.Index alias(3) https://developer.aliyun.com/article/1230377

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
5月前
|
Java Spring
Spring Boot配置的优先级
SpringBoot项目支持多种配置方式,主要包括配置文件(application.properties、yml、yaml)和外部配置(系统属性、命令行参数)。优先级从高到低为:命令行参数 > Java系统属性 > application.properties > application.yml > application.yaml。
|
自然语言处理 网络架构 索引
Elasticsearch7.1之cerebro使用(一)
Elasticsearch7.1之cerebro使用(一)
300 1
|
存储 监控 索引
Elasticsearch 节点
【11月更文挑战第3天】
330 3
|
运维 监控 Java
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
505 5
|
消息中间件 Kafka 测试技术
【Kafka揭秘】Leader选举大揭秘!如何打造一个不丢失消息的强大Kafka集群?
【8月更文挑战第24天】Apache Kafka是一款高性能分布式消息系统,利用分区机制支持数据并行处理。每个分区含一个Leader处理所有读写请求,并可有多个副本确保数据安全与容错。关键的Leader选举机制保障了系统的高可用性和数据一致性。选举发生于分区创建、Leader故障或被手动移除时。Kafka提供多种选举策略:内嵌机制自动选择最新数据副本为新Leader;Unclean选举快速恢复服务但可能丢失数据;Delayed Unclean选举则避免短暂故障下的Unclean选举;Preferred选举允许基于性能或地理位置偏好指定特定副本为首选Leader。
546 5
|
消息中间件 负载均衡 Kafka
Kafka 实现负载均衡与故障转移:深入分析 Kafka 的架构特点与实践
【8月更文挑战第24天】Apache Kafka是一款专为实时数据处理和流传输设计的高性能消息系统。其核心设计注重高吞吐量、低延迟与可扩展性,并具备出色的容错能力。Kafka采用分布式日志概念,通过数据分区及副本机制确保数据可靠性和持久性。系统包含Producer(消息生产者)、Consumer(消息消费者)和Broker(消息服务器)三大组件。Kafka利用独特的分区机制实现负载均衡,每个Topic可以被划分为多个分区,每个分区可以被复制到多个Broker上,确保数据的高可用性和可靠性。
684 2
|
消息中间件 监控 Java
【Kafka节点存活大揭秘】如何让Kafka集群时刻保持“心跳”?探索Broker、Producer和Consumer的生死关头!
【8月更文挑战第24天】在分布式系统如Apache Kafka中,确保节点的健康运行至关重要。Kafka通过Broker、Producer及Consumer间的交互实现这一目标。文章介绍Kafka如何监测节点活性,包括心跳机制、会话超时与故障转移策略。示例Java代码展示了Producer如何通过定期发送心跳维持与Broker的连接。合理配置这些机制能有效保障Kafka集群的稳定与高效运行。
693 2
|
消息中间件 Kafka
面试题Kafka问题之Kafka【线上】积压消费如何解决
面试题Kafka问题之Kafka【线上】积压消费如何解决
393 0
|
测试技术 API Windows
Windows 如何使用 cURL 命令?快速上手
在工作流程中,为了快速验证 API 接口有效性,团队成员经常转向直接执行 cURL 命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用 Windows 系统的用户来说,这里有一套详细的操作指南来执行 cURL 命令。

热门文章

最新文章