yii2-elasticsearch(5)索引别名

前言

之前不知道es还有别名这个东西,直到遇见了一个问题,请教公司的大神,才发现索引别名这个东西必不可少。
产品有个需求,从我技术的角度描述是这样的:将搜索结果按品牌分组统计数量,取数量最多的前五十个品牌显示在页面上。这个需求不难,用es的聚合很容易就能得到,但是品牌我当时用的是text,这个类型貌似不支持分组聚合,要改成keyword才可以。
我想删掉原来的mapping,再重新构建一个新的。不过当时crontab中运行了一个定时向es导入的脚本,我虽然删掉了mapping,但因为就算没有mapping,es也会自己分析新建立一个mapping,导致我新建的时候,就会提示这个索引已存在。
后来咨询了一下大神,告诉我索引用一个新的名字,新mapping建好之后,创建一个跟之前索引一样的别名,并指向新的索引,就可以实现平滑迁移了。

具体参数

假设原来的index命名为product_index
我们要创建的新的index命名为product_index_1

PUT /product_index_1
{
    "mappings": {
        "my_type": {
            "properties": {
                "brand": {
                    "type":   "keyword",
                }
            }
        }
    }
}
POST /_aliases
{
    "actions": [
        { "remove": { "index": "*", "alias": "product_index" }},
        { "add":    { "index": "product_index_1", "alias": "product_index" }}
    ]
}

创建好新的索引,然后删除掉所有以product_index为别名的索引,然后将别名product_index指向product_index_1索引。

注意

新建立的索引里面肯定是没有数据的,要保证不影响搜索结果,先把数据补充上,然后再改别名,我不建议直接用es当数据库,怕误删,数据都是从mysql里面导入的,目的只是为加快全文检索。

参考:
官方文档:https://www.elastic.co/guide/...
还有一篇文章介绍了其他的别名应用场景:
https://www.cnblogs.com/rainw...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值