Elasticsearch 索引别名应用

Elasticsearch支持给索引增加别名,即可以给一个或多个索引增加一个别名。后续查询自动转换别名为实际索引名称。别名也可以和过滤器一起使用实现类似与视图功能,也可以定义路由别名避免不必要的共享操作。

1. 语法

POST /_aliases
{"actions" : [{ "add" : { "index" : "my-index-000001", "alias" : "alias1" } }]
}

action : 数组类型,指定一组动作。包括 add 、remove、remove_index等。

这些动作需要定义别名对象,别名对象包括参数有:

index :指定索引(可以使用通配符),在索引上执行动作。如果 indices没有指定则该参数为必须。

indices:指定一组索引,如果index没有指定则indices参数必须指定。

alias 和 aliases :字符串类型指定别名,支持逗号分割指定多个; aliases是数组类型。

其他参数可参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html。

2. 别名API

2.1 增加别名

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

test1 索引增加 alias1 别名。

2.2 删除别名

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

删除别名alias1。

2.3 重命名别名

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

重命名是先删除再增加。该操作是原子的,无需担心在很短的时间内丢失别名。

2.4 给多个索引增加别名

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

也可以使用索引数组实现:

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

上面示例也可以通过通配符实现:

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

需要提醒的是,上面API只在执行时起作用。后续增加或删除满足条件的索引不会自动更新。

2.5 别名交换

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

Elasticsearch 也支持采用原子操作方式实现索引别名交换,这意味着不会出现集群中某时刻别名不存在情况。但由于索引和搜索涉及多个步骤,正在处理的或排队的请求可能会由于临时不存在的索引而失败。

上面示例,如果单独执行必须先删除,这里一次性执行成功。

3. 别名应用

3.1 过滤别名实现视图功能

过滤别名提供简单方式创建索引视图。过滤通过Query DSL定义搜索、计数等操作。创建过滤别名,首先需确保过滤字段必须存在:

PUT /my-index-000001
{"mappings": {"properties": {"user": {"properties": {"id": {"type": "keyword"}}}}}
}

这里创建了嵌套字段user.id,下面创建过滤别名:

POST /_aliases
{"actions": [{"add": {"index": "my-index-000001","alias": "alias2","filter": { "term": { "user.id": "kimchy" } }}}]
}

该别名仅查询特定符合条件的文档。

3.2 路由别名

路由用于快速定位特定主分片,Elasticsearch支持路由别名,该功能可以和过滤别名一起使用避免必要的共享操作。

下面命令创建别名 alias1 指向 test。创建之后所有对该别名的操作自动修改路由值为 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"}}]
}

4. 总结

本文介绍了Elasticsearch别名功能,通过定义过滤别名实现视图功能,路由别名简化路由操作。

Elasticsearch 索引别名应用相关推荐

  1. Elasticsearch索引别名alias操作

    注:以下操作是在Kibana的"开发工具"中完成,既然了解elasticsearch就默认大家会"elasticsearch的界面"Kibana了 操作环境:E ...

  2. ElasticSearch索引别名和零停机

    起因 显而易见,如果我们需要修改索引,而重建需要删除旧的索引,会导致线上服务不可用,因此,我们想要在不影响线上检索服务的同时,修改索引,就需要用到elasticsearch的一个特性,别名机制 什么是 ...

  3. Elasticsearch: 索引别名Aliases

    业务问题 业务需求是不断变化迭代的,也许我们之前写的某个业务逻辑在下个版本就变化了,我们可能需要修改原来的设计,例如数据库可能需要添加一个字段或删减一个字段,而在搜索中也会发生这件事,即使你认为现在的 ...

  4. ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解...

    墨墨导读:之前我们分享了ElasticSearch最全详细使用教程:入门.索引管理.映射详解,本文详细介绍ElasticSearch的索引别名.分词器.文档管理.路由.搜索详解. 一.索引别名 1. ...

  5. elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

  6. Elasticsearch索引生命周期管理方案

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 一.前言 在 Elasticsearch 的日常中,有很多 ...

  7. Elastricsearch 索引操作详解(快速入门、索引管理、映射详解、索引别名)

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

  8. Elasticsearch - 索引管理

    创建一个索引 我们已经通过索引一篇文档创建了一个新的索引 . 这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射. 索引模板 Elasticsearch 不要求你在使用一个索引前创 ...

  9. ElasticSearch索引

    Elasticsearch索引: 简介 索引是具有相同结构的文档集合.在Elasticsearch中索引是个非常重要的内容,对Elasticsearch的大部分操作都是基于索引来完成的.同时索引可以类 ...

最新文章

  1. linux下,redis 3.2.1双节点集群安装部署
  2. 允许使用抽象类类型 isearchboxinfo 的对象_final关键字、抽象类以及接口
  3. 【招聘(北京)】今天誉讯(北京)有限公司招聘高级.NET软件开发前端工程师
  4. Android工具HierarchyViewer 代码导读(3) -- 后台代码
  5. 致驱动工程师的一封信
  6. UVAL - 6755 - Swyper Keyboard
  7. centos搭建git服务
  8. 使用Picker的时候,让input输入框使用焦点,手机键盘不弹出
  9. Qt捕捉窗口关闭事件
  10. 2022-2028年中国差旅管理行业市场全景调查及投资潜力研究报告
  11. Java实验4 -- 职工信息管理系统
  12. vpp之feature机制介绍
  13. nuc980使用教程--2--spi nor flash(W25Q256)启动
  14. python第三方库pip安装失败,无法使用pip命令安装python第三方库的原因及解决方法...
  15. 【尚硅谷】JavaScript基础实战丨JS入门到精通_01-06
  16. 帝国cms html广告,帝国cms加入JS广告代码不显示的解决办法
  17. c语言编程一个超市购物程序,急求一超市的销售记录C程序(各位大哥帮帮忙啊!)...
  18. C++实现二叉树同构
  19. C语言递归问题【青蛙跳台阶】和【汉诺塔】
  20. 最清晰易懂的Elasticsearch操作手册|收藏夹必备

热门文章

  1. 疫情已经2年半,中国IT厂商该有一些经验教训和改变了
  2. 牛客暑假多校第二场 K carpet
  3. 学习编程与学习编程语言不同
  4. 如何重新发明短信息这个古老的轮子
  5. 我所理解的高通平台Lcd驱动框架
  6. Python3.6-Flask:制作一个语音对话问答机器人系统(网页版)
  7. 25套五彩缤纷的矢量网页背景图片素材【免费下载】
  8. 小窍门解决大问题(绝对值得收藏)
  9. 第二课:创建三层神经网络解决非线性问题
  10. 在 Windows Server 2003 企业服务器中如何配置 IPv6 协议