Elasticsearch索引的基本操作(5)-别名设置

Elasticsearch别名(aliases)使用 目录 一、概述 二、索引别名相关 API 一、概述 在ES中,索引别名(index aliases)就像一个快捷方式或软连接,可以指向一个或多个索引。别名带给我们极大的灵活性,我们可以使用索引别名实现以下功能: (1)在一个运行中的ES集群中无缝的切换一个索引到另一个索引上(无需停机) 例如,在生产环境中,为了避免索引里面的数据和数据库中的数据不一致,运维每天都要重建一遍ES索引。又比如项目中使用的老的索引,需要重建索引,这样必然需要更新dao层查询中的索引名称,然后重新启动应用,可能会对服务的使 阅读详情

1、别名

Elasticsearch中的别名,可以分为索引别名、过滤器别名、路由别名等,不同的别名适用于不同的应用场景:

  • 索引别名就是给一个或几个索引重新定义一个名字,操作索引别名时会转化为对真实索引的操作,定义索引别名时不可以与真实的索引同名;
  • 过滤器别名提供了一种创建同一索引的不同“视图”的简便方法,可以使用Query DSL定义过滤器,并使用此别名将其应用于所有“搜索”,“计数”,“按查询删除”和“更多此类操作”;
  • 路由别名,将路由字段绑定到对应的别名,通过该别名操作时,会执行默认的路由规则,也可以理解为索引的另外一种“视图”;

1.1、索引别名

索引别名,可以应用于以下场景:

  • 将正常运行集群中的索引迁移到另外一个索引,无须停机操作;
  • 将多个索引进行分组,以便于更好的管理;
  • 给索引创建类似于视图的子集;

1.1.1、增加别名

给单个索引增加别名

为索引new_index定义别名new_index_alias,操作如下:

GET /new_index/_alias/new_index_alias

或执行如下操作:

POST /_aliases

{

    "actions" : [

        { "add" : { "index" : "new_index", "alias" : "new_index_alias" } }

    ]

}

 

给多个索引增加相同的别名

给索引new_index和new_index_2增加相同的别名new_index,操作如下:

POST /_aliases

{

    "actions" : [

        { "add" : { "index" : "new_index", "alias" : "new_index_alias" } },

        { "add" : { "index" : "new_index_2", "alias" : "new_index_alias" } }

    ]

}

也可以按以下的方式操作:

POST /_aliases

{

  "actions": [

    {

      "add": {

        "indices": [ "new_index","new_index_2" ],

        "alias": "new_index_alias"

      }

    }

  ]

}

 

 

​​​​​​​给多个索引增加不同的别名

给索引new_index和new_index_2分别增加相同的别名new_index_alias和new_index_alias_2,操作如下:

POST /_aliases

{

    "actions" : [

        { "add":{ "index" : "new_index", "alias" : "new_index_alias" } },

        { "add":{ "index" : "new_index_2", "alias" : "new_index_alias_2" } }

    ]

}

 

根据索引通配符创建别名

创建所有以new_index开头的别名new_index_alias,操作如下:

POST /_aliases

{

    "actions" : [

        { "add" : { "index" : "new_index*", "alias" : "new_index_alias" } }

    ]

}

 

​​​​​​​使用指向多个索引的别名执行索引操作

指向多个索引的别名,用于执行查询不需要做额外的设置,如果需要用于执行索引操作,则需要在被指向的多个索引中指定用于执行索引操作的索引,否则报错误。

如别名new_index_alias是索引new_index和new_index_2的别名,此时没有在new_index和new_index_2中指定哪个用于执行索引操作,则执行以下操作时:

POST /new_index_write/_doc

{

  "title": "Alias for multi index write test",

  "name": "Alias"

}

会报如下错误:

{

  "error": {

    "root_cause": [

      {

        "type": "illegal_argument_exception",

        "reason": "no write index is defined for alias [new_index_write]. The write index may be explicitly disabled using is_write_index=false or the alias points to multiple indices without one being designated as a write index"

      }

    ],

    ...

  "status": 400

}

 

这种情况需要通过设置is_write_index属性来指定哪个索引可用于执行索引操作,重新建立别名,操作如下:

POST /_aliases

{

  "actions": [

    {

      "add": {

        "index": "new_index",

        "alias": "new_index_write",

        "is_write_index": true

      }

    },

    {

      "add": {

        "index": "new_index_2",

        "alias": "new_index_write",

        "is_write_index": false

      }

    }

  ]

}

 

设置好后再执行索引上面的索引操作,就不会报错了。

​​​​​​​1.1.2、​​​​​​​删除别名

删除单个索引别名

删除索引new_index上的别名new_index_alias,操作如下:

DELETE /new_index/_alias/new_index_alias

或

POST /_aliases

{

    "actions" : [

        { "remove" : { "index" : "new_index", "alias" : "new_index_alias" } }

    ]

}

 

​​​​​​​删除多个索引别名

同时删除索引new_index和new_index_2上的别名new_index_alias,操作如下:

#多个索引以英文逗号“,”分隔

DELETE /new_index,new_index_2/_alias/new_index_alias

或

POST /_aliases

{

    "actions" : [

        { "remove" : { "index" : "new_index", "alias" : "new_index_alias" } },

        { "remove":{"index" : "new_index_2", "alias" : "new_index_alias" } }

    ]

}

 

同时删除索引new_index的多个别名,多个别名以英文逗号“,”分隔,操作如下:

#多个别名以英文逗号“,”分隔

DELETE /new_index/_alias/new_index_alias_1,new_index_alias_2

 

​​​​​​​1.1.3、重命名别名

别名的重命名,是通过同时执行remove和add操作来实现的,该操作中的两个动作是原子性的,不会存在别名被删除的瞬间产生没有指向任何索引的问题。

以下将指向new_index的别名new_index_alias重新指向new_index_2,操作如下:

POST /_aliases

{

    "actions" : [

        { "remove" : { "index" : "new_index", "alias" : "new_index_alias" } },

        { "add" : { "index" : "new_index_2", "alias" : "new_index_alias" } }

    ]

}

1.1.4、索引别名查看

查看单个索引的别名

查看指定索引有哪些别名,如查看索引new_index有哪些别名,操作如下:

GET /new_index/_alias/*

返回如下:

{

  "new_index" : {

    "aliases" : {

      "new_index_alias" : { },

      "new_index_alias_1" : { }

    }

  }

}

返回显示索引new_index有new_index_alias和new_index_alias_1两个别名。

​​​​​​​查看多个索引的别名

在索引参数中,通过英文逗号“,”分隔多个索引的名称,操作如下:

GET /new_index,new_index_2/_alias/*

或者使用通配置符指定:

GET /new_index*/_alias/*

​​​​​​​确认别名是否存在

使用HEAD方法,可以检查别名是否存在。

检查指定别名是否属于某个索引,操作如下:

HEAD /new_index/_alias/new_index_route_alias

存在则返回“200 - OK”,不存在则返回“404 - Not Found”。

​​​​​​​1.2、过滤器别名

过滤器别名也是属于索引别名的一种,只是其包含了过滤条件,属于类似视图的别名。

索引new_index中有如下示例数据:

此处创建一个过滤器别名,通过该别名只会查看到name为”Feng”的数据,操作如下:

POST /_aliases

{

  "actions": [

    {

      "add": {

        "index": "new_index",

        "alias": "new_index_feng_alias",

        "filter": { "term": { "name": "feng" } }

      }

    }

  ]

}

此处为索引new_index定义了一个名为new_index_feng_alias的过滤器别名,过滤条件为name的值为”feng”,后续直接使用该别名执行查询时,即使不带任何条件,也只会过滤出name的值为”feng”的数据,验证操作如下:

GET /new_index_feng_alias/_search

​​​​​​​1.3、路由别名

用于给查询和索引操作的路由字段指定别名,可统一指定也可以分别指定,操作方式和过滤器别名一样,也可以理解为索引的另外一种视图。

​​​​​​​​​​​​​​统一定义查询和索引操作的路由别名

以下定义了索引new_index的路由别名new_index_route_alias,使用字母“a”做为路由值,操作如下:

POST /_aliases

{

    "actions" : [

        {

            "add" : {

                 "index" : "new_index",

                 "alias" : "new_index_route_alias",

                 "routing" : "a"

            }

        }

    ]

}

 

​​​​​​​分别给查询和索引操作定义不同的路由值

以下定义了索引new_index的路由别名new_index_route_alias_2,使用字母“a”做为索引路由值,使用字母“a,b”做为查询路由,操作如下:

POST /_aliases

{

    "actions" : [

        {

            "add" : {

                 "index" : "new_index",

                 "alias" : "new_index_route_alias_2",

                 "index_routing":"a",

                 "search_routing" : "a,b"

            }

        }

    ]

}

注:查询路由可以包含多个值,以英文逗号“,”做为分隔,但是索引路由只能够是单一值。

 

​​​​​​​使用路由别名执行查询且指定了路由字段

有时在使用路由别名执行查询查询操作时,又同时通过参数的方式指定路由字段,如下查询示例:

GET /new_index_route_alias/_search?q=name:feng&routing=b,c

这种情况下,路由值就会取当前参数指定的值由与路由别名中定义的路由值的交集,当前示例就会取“b”做为查询路由值。

提升搜索引擎效率:使用 Elasticsearch 别名 在 Elasticsearch 中使用别名的好处 Elasticsearch 中的别名提供了一系列增强索引管理、部署策略、搜索效率和数据组织的优点。为了无缝切换到新的索引版本,平台更新了别名 “readAlias”,使其指向 “index2” 索引。这个新版本将存储更新的产品信息。为了确保平滑的过渡,平台创建了一个名为 “readAlias” 的别名,并将其与 “index1” 索引关联。使用这些操作,别名 “readAlias” 现在指向 “index2” 版本,有效地转换到新的产品数据。 阅读详情

相关推荐

【Elasticsearch】Elasticsearch之别名

别名解决的问题在运行的集群中可以从一个索引切换到另一个索引可以给多个索引进行分组可以与路由搭配使用。

九师兄 1034

Elasticsearch - no write index is defined for alias [log]报错原因以及解决就办法

文章目录前言原因分析解决方法(二选一)1、指定具体索引名2、继续使用别名 转载请标明出处: https://bigmaning.blog.youkuaiyun.com/article/details/121578814 本文出自:【BigManing的博客】 前言 执行es操作报错 no write index is defined for alias [log]. The write index may be explicitly disabled using is_write_index=false or th

BigManing的博客 5354

【Elasticsearch】es 别名可写 索引可写 傻傻分不清

看这个博客,首先明确一句话先看看这两篇文章设置某个索引为只读状态设置为 true 来禁止对索引的写操作,但索引的metadatra可以正常写。

九师兄 1746

Elasticsearch中别名alias相关操作(创建、更新、删除)

Elasticsearch中别名alias相关操作(创建、更新、删除)

IT之一小佬的博客 1万+

ArcGIS 泛克里金插值

按照如图所示的步骤填写参数,1处选择subset features。 2:输入数据。 3:输出训练数据。 4:输出测试数据。 5:80,表示80%的比例是训练数据,20%是测试数据。 6:输入的百分比。 1:选择geostatistical wizard。 2:插值方法,克里金插值 3:训练数据。 4:数据字段。 点击下一步: 1:表示泛克里金插值。 2:输出表面类型。 3:转换类型none。 4:趋势剔除的阶数。 点击下一步: 表示东北—西南方向变化平缓。 1:模型优化 2:模型类型(stabl.

yuanYW7556的博客 7274

Dynamics CRM证书更换

  Dynamics CRM产品一般有两种认证方式。第一种是基于声明的内部访问也就是无证书单纯用账号密码验证。第二种就是联合身份认证,需要安装网站证书。   对于联合身份认证的情况因为需要安装证书,而且证书是有一个一年的有效期,所以运维人员每年都需要进行证书更换的操作。以下就是更换证书的方法及过程。 证书根据申请方式一般也分两种,第一种是自建证书,这种证书是没有机构认证的所以安装上之后网站因为没...

bzpfly的博客 877

2023-02-09 - 3 Elasticsearch基础操作

其实,在前面的章节中我们已经用到了ES的动态映射机制。在介绍数组类型和对象类型时提到,这两种类型都不需要用户提前定义,ES将根据写入的数据自动创建mapping中对应的字段并指定类型。对于基本类型,如果字段没有定义,ES在将数据存储到索引时会进行自动映射,如表3.1所示为自动映射时的JSON类型和索引数据类型的对应关系。在一般情况下,如果使用基本类型数据,最好先把数据类型定义好,因为ES的动态映射生成的字段类型可能会与用户的预期有差别。

一个搬砖工人 715

资源描述框架RDF及Turtle

文章目录1. RDF1.1 简介1.2 格式1.3 RDF的要求2. Turtle2.1 语法2.1.1 简单三元组2.1.2 Turtle中的命名空间2.1.3 Base URI2.1.4 谓语列表2.1.5 宾语列表2.1.6 空白节点(bNodes)2.1.7 数据类型2.1.8 Class membership2.1.9 空URI2.1.10 集合 1. RDF 1.1 简介 RDF(Resource Description Framework)语义网的标准数据模型,是一个用于描述 Web 上的资

doublewhite233的博客 2492

[Elasticsearch] Elasticsearch索引的基本操作(5)-别名设置

原文链接:https://blog.youkuaiyun.com/fenglibing/article/details/92844250?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control 1、别名 Elasticsearch中的别

一杯糖不加咖啡 924

Redis TLS 加密传输实战:从证书生成到安全配置

本文详细介绍了为Redis启用TLS加密传输的完整实战流程。从阐述TLS加密的必要性开始,逐步指导读者生成自签名CA和服务器证书,并深入解析Redis服务端的核心安全配置,包括端口设置、认证模式与性能优化。最后,提供了主流客户端连接示例及生产环境下的排错与运维最佳实践,帮助构建安全的Redis通信通道。

weixin_29274969的博客 515

LabVIEW新手必看:5分钟搞定S7-1200 OPC通信(附完整配置截图)

本文详细介绍了LabVIEW与西门子S7-1200 PLC通过OPC通信实现工业监控系统的完整配置流程。从环境准备、PLC数据块配置到OPC Server高级设置,逐步指导新手快速建立稳定通信链路,并分享工业级应用的优化技巧和异常处理方案,帮助用户提升自动化系统集成效率。

rl6adventurer的博客 640

【Elasticsearch】索引别名 aliases

本文探讨了 Elasticsearch 索引别名与写入索引的关系。主要内容包括:(1)错误演示:当多个索引同时设置为同一别名的写入索引时会报错;(2)三种解决方案:先移除旧索引写入权限再设置新索引、使用原子操作一次性切换、创建时不设置写入索引后续再切换;(3)验证方法:查看别名指向的索引和当前写入索引;(4)实际应用场景:基于时间的索引滚动和索引重建。文章强调一个别名可指向多个索引,但只能有一个写入索引,这种机制是实现索引滚动等高级功能的基础。

Data · Model · Agent · Repeat 1619

银河麒麟(ky10)x86与arm双架构下编译zlmediakit的实战指南

本文提供了在银河麒麟(ky10)操作系统上,针对x86与arm双架构编译部署流媒体服务器zlmediakit的完整实战指南。文章详细阐述了从环境准备、依赖安装、代码获取到编译构建与测试的全过程,重点解析了两种CPU架构下的关键差异与注意事项,帮助开发者高效完成国产化平台上的流媒体服务搭建。

weixin_29306875的博客 98

ES中索引别名(alias)的到底有什么用

索引别名的定义:索引别名是用于引用一个或多个现有索引的辅助名称。大多数 Elasticsearch API 接受索引别名来代替索引。官方给的解释一般来说都很难让人理解,尤其是没接触或使用过的人尤其如此。网上很多解释说索引别名是为了保护索引,可以让索引相对于调用者隐藏起来。其实这样的解释只有懂别名是什么的人才能看懂,而懂的人又不屑于看了其实索引别名是对索引绑定的另一个名字,一个别名可以绑定多个索引,一个索引也可以绑定多个别名。...

Elastic开源社区 6669

YOLOv8【第十一章:视频追踪与流处理篇·第6节】BoT-SORT 改进:结合相机运动补偿(CMC)提升追踪稳定性!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 717

【Bug已解决】NCCL timeout for validation 解决方案

训练用多卡 DDP / FSDP 正常,但一到或者进程直接 hang 在 eval 的某个集合通信上。最迷惑的是:训练阶段(有集合通信)完全正常,偏偏 eval 阶段(看起来更轻量)超时。因为 eval 阶段某些 rank 没参与 collective,导致参与的那部分 rank 永远等不到同伴。

一键难忘的博客 141

ES(Elasticsearch) 别名深入理解

别名是索引之上得抽象,非常强大和灵活。别名的生命周期是存于集群状态之中,由主节点管理。这意味着,如果有一个称为idaho的别名,指向了名为土豆的索引,那么负载就是集群状态映射中额外的键,将名称idaho映射为具体的索引名称-土豆。这就意味着,和额外的索引相比,别名更加轻量级,维护数千个别名都不会负面地影响集群。不过,我们反对创建数十万甚至是上百万的别名,因为到了这个临界点,即使最小的单个映射条目都会引起集群状态膨胀为一个很大的规模。由于每次集群状态发生变化时,整个状态都需要发送到每个节点,所以创建一个新集群

wangxuelei036的博客 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Elasticsearch 索引别名应用

Elasticsearch 索引别名应用 Elasticsearch支持给索引增加别名,即可以给一个或多个索引增加一个别名。后续查询自动转换别名为实际索引名称。别名也可以和过滤器一起使用实现类似与视图功能,也可以定义路由别名避免不必要的共享操作。 1. 语法 POST /_aliases { "actions" : [ { "add" : { "index" : "my-index-000001", "alias" : "alias1" } } ] } action : 数组类型,指定一组

neweastsun的专栏 2471

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

es官网,关于创建自定义生命周期es官网,关于ilm API================> ilm 策略参数// 策略定义子对象"hot": {// 滚动更新操作定义"max_age": "30d" // 最大30天属于热门搜索、写入},// 删除阶段在 90 天后开始// 删除操作定义es官网,关于创建索引并应用ilm策略创建索引模板// 使用此模板的优先级,数值越大,优先级越高,数值大的索引模板配置会覆盖优先级小的配置。

扶摇的博客 2095

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

所有别名的使用说明

有问题的请私信或关注v【技术印记】留言 6328

es 创建索引_震惊!Elasticsearch索引别名还能这么玩

1 背景前段时间,出现过这么一个问题:因为往es 写入数据的是不同的业务部门,而对这些数据进行分析的又是另一部门;写数据的分别在es里面建立了不同的索引表,但是查数据的需要对这些表一起查询进行。想进行查询,在代码里查询的可能是这样的 `GET index1,index2,.../_search`;这样写不会有什么功能性的问题,但是如果有新的索引表,查询方可能又要修改一下查询;虽然需要改动...

weixin_39784972的博客 1961

Elasticsearch 6: 索引别名

目录1. 创建索引添加别名2. 为已有索引添加别名3. 查询指定索引的别名4. 删除别名5. 查询别名6. 通过别名查询7. _aliases 接口8. 结合路由和别名9. _rollover 接口 别名,有点类似数据库的视图,别名一般都会和一些过滤条件相结合,可以做到即使是同一个索引上,让不同人看到不同的数据。别名的访问接口是_alias。 1. 创建索引添加别名 PUT /index_alias { "aliases": { "index1": { "

Fisher3652的博客 2662

elasticsearch:用索引别名更新索引

前言:根据官方文档:如果改变现有索引字段或者添加新的分析器,就会影响现有索引的数据,从而导致搜索不能正常工作,那么怎么能做不影响现有搜索呢,答案就是-------使用索引别名。 索引别名,能在零停机情况下从旧索引切换到新索引,流如下: 在项目中应当使用索引别名my_index来进行查询操作,这样就能在任何时候很好的重建索引了。 一些常见索引操作如下: 1.创建索引: PUT htt...

2310

elasticsearch索引的基本操作以及别名的使用

在上篇文章写了关于elasticsearch索引的数据类型,这里就详细说下索引的增删改查以及其他的一些操作吧。

weixin_43360488的博客 1017

【ES笔记01】ElasticSearch数据库之index索引、doc文档、alias别名、mappings映射结构的基本操作

ElasticSearch,简称:ES,是一个分布式的分析和搜索引擎,底层是基于开源框架Lucene实现的,ES是一个非关系型数据库,它采用JSON文档的格式保存数据,并且可以对JSON中的每一个字段进行索引,从而实现快速搜索功能。

✅ Java 开发工程师 3134

开源-基于ElasticSearch的通用搜索引擎

想要做出一个好的搜索引擎,重中之重是要先做好数据治理。

欢迎来到李奇峰的数据世界 3130
上一篇: Spring中使用atomikos+druid实现经典分布式事务
下一篇: Elasticsearch索引的基本操作(6)-索引设置
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值