elasticsearch 5.x 系列之七 基于索引别名的零停机升级服务
一,写在前面的话,elasticsearch 建立索引时的Mapping 设置
建议你在设计索引的初期,就把索引的各个字段设计好,因为,elasticsearch 的各个字段,定义好类型后,就无法进行修改了。
另外需要注意的点有如下
注意1:不要在一个索引中定义多个type。
6.X版本已经不支持,7.X版本彻底不支持。
扩展问题:5.X版本的父子文档实际实现中是一个索引中定义了多个type,到了6.X中实现方式改变为:join方式。
注意2:将Set _source设置为false。
假设你只关心度量结果,不是原始文件内容。
将节省磁盘空间并减少IO。
比如,你可以把原始的数据存储在mysql ,hbase 等其他地方,从es 中得到id 后,去相应的数据库中进行取数据
举例:
“_source”:{
“enabled”:false
},
注意3:将_all设置为false。
假设你确切地知道你对哪个field做查询操作?
能实现性能提升,缩减存储。
举例:
“_all”:{
“enabled”:false },
注意4:设置dynamic = strict。
假设你的数据是结构化数据。
字段设置严格,避免脏数据注入。
举例:
“dynamic”:”strict”,
注意5:使用keyword类型
假设你只关心完全匹配
提高性能和缩小磁盘存储空间
举例:
“CLF_CustomerID”:{
“type”:”keyword”
},
注意6:使用别名
二,elasticsearch 别名处理
首先看一下索引别名的建立和删除
1,建立索引别名(如下显示的是建立test1 的索引别名 alias1)
curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "add" : { "index" : "test1", "alias" : "alias1" } }
]
}
'
2,删除索引的别名(如下显示的是删除test1 的索引别名 alias1)
curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "remove" : { "index" : "test1", "alias" : "alias1" } }
]
}
'
3, 索引和索引别名之间的关系是多对多的关系
也就是说1个索引别名可以对应多个索引,一个索引可以有多个索引别名。
三,elasticsearch 别名的使用,实战运用
1,举例子。
首先,
举例,比如你有一个索引,名字叫做zebra_info_data,那么建议你线上的产品,利用别名机制机制,然后,搜索的时候,你就可以用别名进行搜索了
curl -X PUT "master:9200/zebra_info_data/_alias/zebra_info_data_alias"
搜索的时候,你就可以使用别名搜索了,类似如下:
curl -XGET "master:9200/zebra_info_alias/_search?pretty"
2,另外的例子
1, 建立索引test
2, 建立索引test_2
3, 给索引test_2 添加别名 test, 并且删除 test 索引,Ok, 现在数据搜索由test 到test_2
curl -X PUT "localhost:9200/test"
curl -X PUT "localhost:9200/test_2"
curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "add": { "index": "test_2", "alias": "test" } },
{ "remove_index": { "index": "test" } }
]
}
'
3,另外的例子。
下面的例子,显示了用索引别名进行搜索的优势, 这样就可以不影响线上的服务,而在后台偷偷做手脚了
curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
"actions": [
{ "remove": { "index": "my_index_v1", "alias": "my_index" }},
{ "add": { "index": "my_index_v2", "alias": "my_index" }}
]
}
'
4, 其他,比如查看,以及删除。
删除logs_20162801指向的别名 current_day
curl -X DELETE "localhost:9200/logs_20162801/_alias/current_day"
删除所有指向current_day 的索引引用
curl -X DELETE "localhost:9200/*/_alias/current_day"
查看所有指向logs_20162801 的别名
GET /logs_20162801/_alias/*
查看zebra_geo_poi 这个别名指向的所有别名。
curl -XGET 'http://172.16.232.242:9200/_alias/zebra_geo_poi?pretty'
四,写在后面的话。
建议在设计index 的初期,就把索引建立好,后期就不用进行修改了。应为这里的零停机升级服务,或者说重新索引的的数据,是花费巨大的资源为代价的。
另外,附上官网中的别名api 一份,不要太感谢本小生了。
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html
elasticsearch 5.x 系列之七 基于索引别名的零停机升级服务的更多相关文章
- ElasticSearch(三十)基于scoll+bulk+索引别名实现零停机重建索引
1.为什么要重建索引? 总结,一个type下的mapping中的filed不能被修改,所以如果需要修改,则需要重建索引 2.怎么zero time重建索引? 一个field的设置是不能被修改的,如果要 ...
- elasticsearch 5.x 系列之四(索引模板的使用,详细得不要不要的)
1,首先看一下下面这个索引模板 curl -XPUT "master:9200/_template/template_1?pretty" -H 'Content-Type: app ...
- Elasticsearch顶尖高手系列课程推荐
Elasticsearch,是目前行业中非常热门的一个技术.Elasticsearch是一种分布式的海量数据搜索与分析的技术,可以用于电商网站.门户网站.企业IT系统等各种场景下的搜索引擎,也可以用于 ...
- Elasticsearch之索引模板index template与索引别名index alias
为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了. 所以,这个时候,就存在创建索引模 ...
- elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)
一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...
- elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...
- Elasticsearch系列---实战零停机重建索引
前言 我们使用Elasticsearch索引文档时,最理想的情况是文档JSON结构是确定的,数据源源不断地灌进来即可,但实际情况中,没人能够阻拦需求的变更,在项目的某个版本,可能会对原有的文档结构造成 ...
- Elasticsearch 索引别名与Template
在使用elasticsearch的时候,经常会遇到需要淘汰掉历史数据的场景. 为了方便数据淘汰,并使得数据管理更加灵活,我们经常会以时间为粒度建立索引,例如: 每个月建立一个索引:monthly-20 ...
- ES 10 - Elasticsearch的索引别名和索引模板
目录 1 索引模板概述 1.1 什么是索引模板 1.2 索引模板中的内容 1.3 索引模板的用途 2 创建索引模板 3 查看索引模板 4 删除索引模板 5 模板的使用建议 5.1 一个index中不能 ...
随机推荐
- Ajax异步封装
//自己封装了一个异步方法. //第一个参数:GET或者是POST,二个参数:请求的url地址, //第三个:是否异步第四个:往后台发送的Post的数据,最后一个后台返回数据之后,处理数据的回调函数. ...
- 计算Sn
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字. 例如:2+22+222+2222+22222(n=5), 输入 输入两个数.第一个为a ,第二个为n(表示有多少个数相加 ...
- <Android 基础(十六)> Toast
介绍 A toast provides simple feedback about an operation in a small popup. It only fills the amount of ...
- 【工作中学习】CreateProcessAsUser失败,错误码:1314
事情起因是这样, 产品的Windows服务(Service)之前一直是用Local System Account在运行的,但这个版本有需求要换成使用普通的Domain User来运行,如下图: 但却出 ...
- 【Node.js】Stream(流)的学习笔记
最近学习使用Node.js创建http proxy server,少不了要跟Stream打交道.昨天开始查阅一些资料,多少有了一些粗浅了解.整理在这里,供学习之用. 从Node.js API文档中可知 ...
- 使用BaiDu Java Script Web Api 在Web开发中嵌入地图使用步骤
前言 很多做企业网站的朋友,都喜欢有一个关于我们.联系我们的栏目,那么这个栏目放什么内容才能饱满那,只有放个地图才显得有点高大上. 一.产生并复制访问Api的密钥(AK) 1.首先我们需要注册一个百度 ...
- 封装win7系统、制作win7GHO镜像、制作一个自定义的镜像文件具体步骤、制作Win10镜像gho
作者:导演你让灰太狼吃只羊 来源:CSDN 原文:https://blog.csdn.net/qq_35057426/article/details/83015516 版权声明:本文为博主原创文章,转 ...
- POJ-2155 Matrix---二维树状数组+区域更新单点查询
题目链接: https://vjudge.net/problem/POJ-2155 题目大意: 给一个n*n的01矩阵,然后有两种操作(m次)C x1 y1 x2 y2是把这个小矩形内所有数字异或一遍 ...
- python 爬图片
学了两天python,语法慢慢熟悉吧,数据结构都没写过. 写了一个爬图片的小东西.挺有意思的.都是女神照 (✿◡‿◡) 用的是正则表达式, ''' 符号: . 匹配任意字符,\n除外 * 匹配前一个字 ...
- 某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容10桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为3个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。
寺庙和尚打水 设信号量mutex_gang, mutex_jing, gang_empty, gang_full, count分别表示使用缸互斥, 使用井互斥, 缸空, 缸满, 水桶总个数 semap ...