ElasticSearch 搜索引擎入门到实战 19-- 索引别名的使用

别名有什么⽤
        在开发中,随着业务需求的迭代,较⽼的业务逻辑就要⾯临更新甚⾄是重构,⽽对于es来说,为了适应新的业务逻辑,可能就要对原有的索引做⼀些修改,⽐如对某些字段做调整,甚⾄是重建索引。⽽做这些操作的时候,可能会对业务造成影响,甚⾄是停机调整等问题。
        由此,es提供了索引别名来解决这些问题。 索引别名就像⼀个快捷⽅式或是软连接,可以指向⼀个或多个索引,也可以给任意⼀个需要索引名的API来使⽤。
        别名的应⽤为程序提供了极⼤地灵活性

查询别名

//查询指定索引的别名
GET /nba/_alias

//查询所有索引的别名
GET /_alias

新增别名

//方式1
POST /_aliases
{
	"actions": [{
		"add": {
			"index": "nba",
			"alias": "nba_v1.0"
		}
	}]
}

//方式2
PUT /nba/_alias/nba_v1.1

删除别名

//方式1
POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "nba",
        "alias": "nba_v1.0"
      }
    }
  ]
}

//方式2
DELETE /nba/_alias/nba_v1.1

重命名别名

POST /_aliases
{
  "actions": [
    {
      "remove": {
        "index": "nba",
        "alias": "nba_v1.0"
      }
    },
    {
      "add": {
        "index": "nba",
        "alias": "nba_v2.0"
      }
    }
  ]
}

为多个索引指定一个别名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "nba",
        "alias": "national_player"
      }
    },
    {
      "add": {
        "index": "wnba",
        "alias": "national_player"
      }
    }
  ]
}

为同个索引指定多个别名

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "nba",
        "alias": "nba_v2.1"
      }
    },
    {
      "add": {
        "index": "nba",
        "alias": "nba_v2.2"
      }
    }
  ]
}

通过别名读索引

  • 当别名指定了⼀个索引,则查出⼀个索引
  • 当别名指定了多个索引,则查出多个索引
GET /nba_v2.0
GET /national_player

 
通过别名写索引

  • 当别名指定了⼀个索引,则可以做写的操作
POST /nba_v2.0/_doc/567
{
  "countryEn": "Croatia",
  "teamName": "快船567",
  "birthDay": 858661200000,
  "country": "克罗地亚",
  "teamCityEn": "LA",
  "code": "ivica_zubac",
  "displayAffiliation": "Croatia",
  "displayName": "伊维察 祖巴茨哥哥",
  "schoolType": "",
  "teamConference": "⻄部",
  "teamConferenceEn": "Western",
  "weight": "108.9 公⽄",
  "teamCity": "洛杉矶",
  "playYear": 3,
  "jerseyNo": "40",
  "teamNameEn": "Clippers",
  "draft": 2016,
  "displayNameEn": "Ivica Zubac",
  "heightValue": 2.16,
  "birthDayStr": "1997-03-18",
  "position": "中锋",
  "age": 22,
  "playerId": "1627826"
}
  • 当别名指定了多个索引,可以指定写某个索引
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "nba",
        "alias": "national_player",
        "is_write_index": true //如果为false,就不能往索引中写入数据
      }
    },
    {
      "add": {
        "index": "wnba",
        "alias": "national_player"
      }
    }
  ]
}

POST /national_player/_doc/569
{
	"countryEn": "Croatia",
	"teamName": "快船569",
	"birthDay": 858661200000,
	"country": "克罗地亚",
	"teamCityEn": "LA",
	"code": "ivica_zubac",
	"displayAffiliation": "Croatia",
	"displayName": "伊维察 祖巴茨妹妹",
	"schoolType": "",
	"teamConference": "⻄部",
	"teamConferenceEn": "Western",
	"weight": "108.9 公⽄",
	"teamCity": "洛杉矶",
	"playYear": 3,
	"jerseyNo": "40",
	"teamNameEn": "Clippers",
	"draft": 2016,
	"displayNameEn": "Ivica Zubac",
	"heightValue": 2.16,
	"birthDayStr": "1997-03-18",
	"position": "中锋",
	"age": 22,
	"playerId": "1627826"
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值