一,写在前面的话,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 系列之七 基于索引别名的零停机升级服务的更多相关文章

  1. ElasticSearch(三十)基于scoll+bulk+索引别名实现零停机重建索引

    1.为什么要重建索引? 总结,一个type下的mapping中的filed不能被修改,所以如果需要修改,则需要重建索引 2.怎么zero time重建索引? 一个field的设置是不能被修改的,如果要 ...

  2. elasticsearch 5.x 系列之四(索引模板的使用,详细得不要不要的)

    1,首先看一下下面这个索引模板 curl -XPUT "master:9200/_template/template_1?pretty" -H 'Content-Type: app ...

  3. Elasticsearch顶尖高手系列课程推荐

    Elasticsearch,是目前行业中非常热门的一个技术.Elasticsearch是一种分布式的海量数据搜索与分析的技术,可以用于电商网站.门户网站.企业IT系统等各种场景下的搜索引擎,也可以用于 ...

  4. Elasticsearch之索引模板index template与索引别名index alias

    为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了. 所以,这个时候,就存在创建索引模 ...

  5. elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

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

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

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

  7. Elasticsearch系列---实战零停机重建索引

    前言 我们使用Elasticsearch索引文档时,最理想的情况是文档JSON结构是确定的,数据源源不断地灌进来即可,但实际情况中,没人能够阻拦需求的变更,在项目的某个版本,可能会对原有的文档结构造成 ...

  8. Elasticsearch 索引别名与Template

    在使用elasticsearch的时候,经常会遇到需要淘汰掉历史数据的场景. 为了方便数据淘汰,并使得数据管理更加灵活,我们经常会以时间为粒度建立索引,例如: 每个月建立一个索引:monthly-20 ...

  9. ES 10 - Elasticsearch的索引别名和索引模板

    目录 1 索引模板概述 1.1 什么是索引模板 1.2 索引模板中的内容 1.3 索引模板的用途 2 创建索引模板 3 查看索引模板 4 删除索引模板 5 模板的使用建议 5.1 一个index中不能 ...

随机推荐

  1. get post put delete

    get:获取资源 幂等 post:执行不安全和非幂等操作(幂等:多次请求于一次请求的效果一样) put:更新资源  幂等 delete:删除资源  幂等 如何理解幂等: public book { p ...

  2. css透明边框实现

    代码:   css:      .box1{ background: black; padding:20px; } .box2{ background: #fff; border: 10px soli ...

  3. 2602 最短路径问题Dihstra算法

    题目描述 Description 平面上有n个点(n<=100),每个点的坐标均在-10000~10000之间.其中的一些点之间有连线.若有连线,则表示可从一个点到达另一个点,即两点间有通路,通 ...

  4. Java实习问题记录

    1. $(window).height() 获取屏幕高度2. $("#chartbottomdiv").width() 某个控件的属性 用"."3. // 保留 ...

  5. SaberSama【css总结】

    为什么要转过来呢? 因为我觉到,同样是一个初学者,应该互相学习,交流. css:Cascading Style Sheets 层叠样式表 CSS引入方式: 1.内嵌: <p style=&quo ...

  6. Spark Streaming与Kafka集成

    Spark Streaming与Kafka集成 1.介绍 kafka是一个发布订阅消息系统,具有分布式.分区化.多副本提交日志特点.kafka项目在0.8和0.10之间引入了一种新型消费者API,注意 ...

  7. MySQL数据库实验四:嵌套查询

    实验四          嵌套查询 一.实验目的 掌握SELECT语句的嵌套使用,实现表的复杂查询,进一步理解SELECT语句的高级使用方法. 二.实验环境 三.实验示例 1.  查询与“刘晨”在同一 ...

  8. swift 注解 (和java比照)@attribute name

    Attributes provide more information about a declaration or type. There are two kinds of attributes i ...

  9. Uva 11401 数三角形

    题目链接:https://uva.onlinejudge.org/external/114/11401.pdf 题意:1~n个数里面挑3个不同的数,组成一个三角形.求方案数. 分析: 令最长的边为X, ...

  10. jenkins 执行shell命令出错command not found 和No such file or directory

    [root@localhost usr]# sh test.sh command not found -bash: cd: usr: No such file or directory 这里碰到了一个 ...