• 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

  • 相关阅读:
    跳槽“六要”你懂吗?[转载]
    基于RFID 技术的仓储物流入库流程设计[转载]
    RFID:物流时代的新宠儿[转载]
    WEB界面设计五种特征[转]
    全国物流快递查询网址大全
    职员想跳槽,公司应检讨[转]
    商品条码管理办法 (2005)
    让总裁夜不成眠三件事[转]
    Google地图的配色问题(以及MapBar和51ditu)
    薪酬公开还是保密[转]
  • 原文地址:https://www.cnblogs.com/unnunique/p/9362035.html
Copyright © 2020-2023  润新知