当前位置: 首页 > news >正文

【ES实战】索引别名的使用说明

索引别名

文章目录

    • 索引别名
      • 带有过滤器的别名
        • Routing
        • Write Index
      • REST单一添加一个别名
        • 示例:
      • 索引创建是增加别名
      • 删除别名
      • 检索现有别名
        • 示例:

  1. 索引别名可以通过API的方式进行操作
  2. 一个索引别名可以映射到一个或一个以上的索引
  3. 索引名和索引别名不能重复,在集群中都是唯一的
  4. 别名可以与过滤器结合使用
  5. 一个索引可以拥有多个别名
  6. 只映射到一个索引的索引别名默认可以写入。目前有特性,当别名关联到多个索引的时候,可以通过配置别名的写入索引,来通过别名写入,否则无法通过别名进行写入操作,但是非日志类的索引不建议使用。

Elasticsearch 有一些操作索引别名的APIs,可以为索引设计索引别名。索引别名API允许用一个名字来别名一个索引,所有的API都会自动将别名转换为实际的索引名称。一个别名支持被映射到一个以上的索引,当指定它时,别名将自动展开到被别名的索引。一个别名也可以与一个过滤器相关联,该过滤器将在搜索时自动应用,并路由值。一个别名不能与一个索引有相同的名称。

下面是一个将别名alias1与索引test1关联的例子:

PUT gudong20230629001POST /_aliases
{"actions" : [{ "add" : { "index" : "gudong20230629001", "alias" : "gudong" } }]
}GET gudong20230629001{"gudong20230629001": {"aliases": {"gudong": {}},"mappings": {},"settings": {"index": {"creation_date": "1688021916053","number_of_shards": "5","number_of_replicas": "1","uuid": "o_Q5UdbPRWy4w_E9QJS9PA","version": {"created": "6070299"},"provided_name": "gudong20230629001"}}}
}

删除同样的索引别名

POST /_aliases
{"actions" : [{ "remove" : { "index" : "gudong20230629001", "alias" : "gudong" } }]
}GET gudong20230629001{"gudong20230629001": {"aliases": {},"mappings": {},"settings": {"index": {"creation_date": "1688021916053","number_of_shards": "5","number_of_replicas": "1","uuid": "o_Q5UdbPRWy4w_E9QJS9PA","version": {"created": "6070299"},"provided_name": "gudong20230629001"}}}
}

重命名一个别名是一个简单的remove然后add操作,在同一个API中。这个操作是原子的,不需要担心短时间内别名不指向索引的问题:

在一次api请求的actions是什么样的原子原子性,gudong20230629002索引实际上不存在,请求直接异常退出。

POST /_aliases
{"actions" : [{ "remove" : { "index" : "gudong20230629001", "alias" : "gudong" } },{ "add" : { "index" : "gudong20230629001", "alias" : "gudong" } }]
}

下例子,请求成功结束,虽然gudong20230629001上并没有别名gudong,但是有remove操作没有影响add操作。

POST /_aliases
{"actions" : [{ "remove" : { "index" : "gudong20230629001", "alias" : "gudong" } },{ "add" : { "index" : "gudong20230629001", "alias" : "gudong" } }]
}

在一个API中一次为一个索引别名关联多个索引的写法有:

  1. 将一个别名与一个以上的索引相关联,只需要几个 add动作:
POST /_aliases
{"actions" : [{ "add" : { "index" : "gudong20230629001", "alias" : "gudong" } },{ "add" : { "index" : "gudong20230629002", "alias" : "gudong" } }]
}
  1. 可以用indices数组语法为一个动作指定多个索引:
POST /_aliases
{"actions" : [{ "add" : { "indices" : ["gudong20230629001", "gudong20230629002"], "alias" : "gudong" } }]
}
  1. glob模式(通配符模式)也可以用来将一个别名与多个具有共同名称的索引联系起

    在计算机编程中,特别是在类似Unix的环境中,术语globbing有时被用来指基于通配符的模式匹配。名词 "glob "用来指代一个特定的模式,例如 “使用glob *.log来匹配所有这些日志文件”。它的符号比正则表达式更简单。

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

glob模式别名是对某一时刻,集群上满足条件的索引映射生效,不会随着匹配该模式的新索引的添加/删除而自动更新。

也可以在一次操作中把一个索引和一个别名互换:

索引名称和别名名称 不是不能重名吗?这方式可以跳过验证?这里的actions里面的add和remove_index是原子的。如果只add,则会报错。

PUT gudong20230629001     
PUT gudong20230629002   
POST /_aliases
{"actions" : [{ "add":  { "index": "gudong20230629002", "alias": "gudong20230629001" } },{ "remove_index": { "index": "gudong20230629001" } }  ]
}

要在一个动作中指定多个别名,也存在相应的aliases数组语法。

带有过滤器的别名

带有过滤器的别名提供了一种简单的方法来创建同一索引的不同 “视图”。过滤器可以使用Query DSL来定义,并应用于所有的搜索、计数、通过查询删除和更多类似的操作,都有这个别名。

要创建一个过滤的别名,首先我们需要确保这些字段已经存在于mappings中:

PUT /test1
{"mappings": {"_doc": {"properties": {"user" : {"type": "keyword"}}}}
}

现在我们可以创建一个别名,在字段user上使用一个过滤器:

POST /_aliases
{"actions" : [{"add" : {"index" : "test1","alias" : "alias2","filter" : { "term" : { "user" : "donny" } }}}]
}
Routing

可以将路由值与别名相关联。这个功能可以和过滤别名一起使用,以避免不必要的分片操作。

下面的命令创建了一个新的别名alias1,指向索引test。在alias1被创建后,所有使用这个别名的操作都会被自动修改为使用1值进行路由:

POST /_aliases
{"actions" : [{"add" : {"index" : "test","alias" : "alias1","routing" : "1"}}]
}

也可以为搜索和索引操作指定不同的路由值:

POST /_aliases
{"actions" : [{"add" : {"index" : "test","alias" : "alias2","search_routing" : "1,2","index_routing" : "2"}}]
}

如上例所示,搜索路由可以包含几个用逗号分隔的值。索引路由只能包含一个单一的值。

如果一个使用路由别名的搜索操作也有一个路由参数,那么将使用搜索别名路由和参数中指定的路由的交集。例如,下面的命令将使用 "2 "作为路由值:

GET /alias2/_search?q=user:kimchy&routing=2,3
Write Index

我们可以将别名所指向的索引作为写索引。当被指定时,所有针对指向多个索引的别名的索引和更新请求将试图解析到作为写索引的那个索引。每个别名在同一时间只能有一个索引被指定为写入索引。如果没有指定写索引,并且有多个索引被别名引用,那么将不允许写。

可以使用别名API和索引创建API来指定一个与别名相关的索引作为写索引。

设置一个索引作为别名的写入索引也会影响到在Rollover过程中对该别名的操作。

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

在这个例子中,我们将别名alias1testtest2相关联,其中test将是被选择写入的索引。

PUT /alias1/_doc/1
{"content": "Test Content"
}

被索引到/alias1/_doc/1的新文件将被当作/test/_doc/1来索引。

GET /test/_doc/1

要交换哪个索引是一个别名的写入索引,可以利用Aliases API来做一个原子交换。这种交换不依赖于动作的顺序。

POST /_aliases
{"actions" : [{"add" : {"index" : "test","alias" : "alias1","is_write_index" : false}}, {"add" : {"index" : "test2","alias" : "alias1","is_write_index" : true}}]
}

如果别名没有为一个索引明确设置is_write_index: true,并且只引用了一个索引,那么这个被引用的索引就会表现得好像它是写入索引,直到引用了另外一个索引。在这一点上,将没有写入索引,写入将被拒绝。

REST单一添加一个别名

也可以用REST端点添加一个别名

PUT /{index}/_alias/{name}
参数解释
index别名所指的索引. 可以是以下任一一个 `*
name别名的名称。必填项。
routing可选项,路由值
filter可选项,过滤器

你也可以使用复数的_aliases

示例:
  • 增加一个基础别名

    PUT /logs_201305/_alias/2013

  • 增加一个带过滤器的别名

    首先创建索引并为user_id字段添加一个映射:

    PUT /users
    {"mappings" : {"_doc" : {"properties" : {"user_id" : {"type" : "integer"}}}}
    }
    

    然后为一个特定的用户添加别名:

    PUT /users/_alias/user_12
    {"routing" : "12","filter" : {"term" : {"user_id" : 12}}
    }
    

索引创建是增加别名

别名也可以在索引创建期间指定:

PUT /logs_20162801
{"mappings" : {"_doc" : {"properties" : {"year" : {"type" : "integer"}}}},"aliases" : {"current_day" : {},"2016" : {"filter" : {"term" : {"year" : 2016 }}}}
}

删除别名

删除别名的REST endpoint 是: /{index}/_alias/{name}

路径参数备注
index别名所指的索引。`*
name别名的名称。`*

或者你可以使用复数的_aliases。例子:

DELETE /logs_20162801/_alias/current_day

检索现有别名

获取索引别名API允许通过别名名称和索引名称进行过滤。这个api重定向到主节点并获取所请求的索引别名,如果有的话。这个api只对找到的索引别名进行序列化。

参数名说明
index要获取别名的索引名称。通过通配符支持部分名称,也可以指定多个索引名称,用逗号分隔。也可以使用一个索引的别名。
alias响应中要返回的别名的名称。和index选项一样,这个选项支持通配符和指定多个用逗号隔开的别名的选项。
ignore_unavailable如果指定的索引名称不存在,该怎么做。如果设置为true,那么这些索引将被忽略。

REST的端点地址: /{index}/_alias/{alias}.

示例:

查询索引logs_20162801下的所有别名:

GET /logs_20162801/_alias/*

Response:

{"logs_20162801" : {"aliases" : {"2016" : {"filter" : {"term" : {"year" : 2016}}}}}
}

在任何索引中具有2016年名称的所有别名:

GET /_alias/2016

Response:

{"logs_20162801" : {"aliases" : {"2016" : {"filter" : {"term" : {"year" : 2016}}}}}
}

任何索引中以20开头的所有别名:

GET /_alias/20*

Response:

{"logs_20162801" : {"aliases" : {"2016" : {"filter" : {"term" : {"year" : 2016}}}}}
}

相关文章:

【ES实战】索引别名的使用说明

索引别名 文章目录 索引别名带有过滤器的别名RoutingWrite Index REST单一添加一个别名示例: 索引创建是增加别名删除别名检索现有别名示例: 索引别名可以通过API的方式进行操作一个索引别名可以映射到一个或一个以上的索引索引名和索引别名不能重复,在集群中都是唯…...

QT信号与槽机制 和 常用控件介绍

QT信号与槽机制 1、信号(signal): 所谓信号槽 (观察者模式)信号本质是事件。信号展现方式就是函数。当某一个事件发生之后,则发出一个信号(signal). 2、槽(slot): 就是对信号响应的函数,槽就是一个函数。槽函数与普通函数区别槽函数可以与一个信号关联&…...

【css-banner图片自适应】

<picture><source media"(max-width: 480px)" srcset"图片地址"><source media"(min-width: 481px)" srcset"图片地址"><img src"图片地址" id"homebanner"></picture>img{height:…...

【k8s管理操作】

k8s管理操作 一、k8s管理操作1.陈述式资源管理2.声明式资源管理 二、k8s基础信息常看&#xff08;命令&#xff09;增删改查项目的生命周期&#xff1a;创建-->发布-->更新-->回滚-->删除 headless clusterIP 无头模式 金丝雀发布&#xff08;Canary Release&#…...

【java基础学习】之DOS命令

#java基础学习 1.常用的DOS命令&#xff1a; dir:列出当前目录下的文件以及文件夹 md: 创建目录 rd:删除目录cd:进入指定目录 cd.. :退回到上级目录 cd\ : 退回到根目录 del:删除文件 exit:退出dos命令行 1.dir:列出当前目录下的文件以及文件夹 2.md: 创建目录 …...

学习记录——StyleGAN2+SA-UNet

SA-UNet for Retinal Vessel improvment using StyleGAN2 作者提出了一种改进视网膜图像分割的方法,通过创建图像及其相应的分割地图来实现。作者的解决方案包括使用DRIVE数据集1对StylGAN2进行训练,并使用目前在分割DRIVE图像方面取得最先进结果的SA-UNet模型对新合成的图像…...

JVM222

文章目录 JVM222运行时数据区的内部结构线程程序计数器&#xff08;PC寄存器&#xff09;虚拟机栈 JVM222 运行时数据区的内部结构 概述 本节主要讲的是运行时数据区&#xff0c;也就是下图这部分&#xff0c;它是在类加载器加载完成后的阶段&#xff0c;如下图&#xff1a; …...

C语言 指针

含义 从根本上看&#xff0c;指针是一个值为内存地址的变量&#xff08;或数据对象&#xff09;。指针变量的值是地址。 要创建指针变量&#xff0c;先要声明指针变量的类型 作用 1.实现复杂的数据结构&#xff0c;例如数组、链表、队列和堆栈等&#xff1b; 2.能方便地表…...

YOLOv8血细胞检测(7):小目标大目标一网打尽,轻骨干重Neck的轻量级GFPN | 阿里ICLR2022 GiraffeDet

💡💡💡本文改进:小目标大目标一网打尽GFPN,提升大小目标检测性能 GFPN | 亲测在血细胞检测项目中涨点,map@0.5 从原始0.895提升至0.904 收录专栏: 💡💡💡YOLO医学影像检测:http://t.csdnimg.cn/N4zBP ✨✨✨实战医学影像检测项目,通过创新点验证涨点可…...

广度优先(BFS)(例子:迷宫)

广度优先搜索算法&#xff08;BFS&#xff09;是一种用于图形和树数据结构的搜索算法。该算法从根节点开始搜索&#xff0c;然后依次访问每个相邻节点。在搜索过程中&#xff0c;每个节点都标记为已访问&#xff0c;以避免重复访问。BFS算法适用于寻找最短路径的问题&#xff0…...

【安卓源码】安卓Watchdog 机制

在Android系统中&#xff0c;也设计了一个软件层面Watchdog&#xff0c;用于保护一些重要的系统服务&#xff0c;比如&#xff1a;AMS、WMS、PMS等&#xff0c;由于以上核心服务运行在system_server进程里面&#xff0c;所以当以上服务出现异常时&#xff0c;通常会将system_se…...

inscode连接不上gpu,持续8小时,为了数据不丢失续费了6小时,我只想知道什么时候可以连接

并且给我相应的补偿...

QT位置相关函数

Qt&#xff08;Qt Framework&#xff09;是一个流行的C应用程序开发框架&#xff0c;提供了丰富的位置相关函数和类&#xff0c;用于处理窗口、窗口小部件和图形的位置和几何操作。以下是一些常用的Qt位置相关函数和类&#xff1a; QPoint&#xff1a;QPoint类表示一个二维点的…...

vulnhub靶场 Kioptrix-level-1

简介&#xff1a; vulnhub是一个提供靶场环境的平台。而Kioptrix-level-1就是一个对新手比较友好的靶场。初学渗透的同学可以做做试试看&#xff0c;项目地址如下。 项目地址&#xff1a;Kioptrix: Level 1 (#1) ~ VulnHub 信息收集 查看本机IP&#xff0c;靶机跟kali都是使用…...

全网最细,真实企业性能测试落地实施,一文带你快速打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、什么是性能测试…...

三十一、【进阶】B+树的演变过程

1、B树简单介绍 &#xff08;1&#xff09;介绍&#xff1a;B树也属于B树&#xff0c;是B树的变种 &#xff08;2&#xff09;特点&#xff1a;所有的数据都位于叶子节点上&#xff0c;叶子节点上的所有元素形成了一个单项链表 &#xff08;3&#xff09;图示&#xff1a; 2…...

算法通过村第十三关-术数|白银笔记|术数高频问题

文章目录 前言数组实现加法专题数组实现整数加法字符串加法二进制加法 幂运算专题求2的次幂求3的次幂求4的次幂 总结 前言 提示&#xff1a;人心本易趋死寂&#xff0c;苦难之后&#xff0c;焕然重建&#xff0c;激荡一阵&#xff0c;又趋麻木。 --苏枕书《有鹿来》 我们继续看…...

Java 线程的生命周期

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

Vue页面监听键盘按键的多种方法

在Vue页面中&#xff0c;可以使用多种方法来监听键盘按键。以下是至少五种常用的方法&#xff1a; 使用keydown或keyup指令来绑定键盘按键事件。 <template><div><input type"text" keydown.enter"handleEnterKey" /></div> <…...

解析硬件连通性测试的重要性及测试方法

在现代科技世界中&#xff0c;硬件设备的复杂性和多样性已经达到了前所未有的水平。无论是计算机、智能手机、物联网设备还是嵌入式系统&#xff0c;各种硬件组件的协同工作对于设备的正常运行至关重要。硬件连通性测试是确保这些组件相互配合无误的重要步骤。 一、硬件连通性测…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...