zoukankan      html  css  js  c++  java
  • Elasticsearch之别名

    别名解决的问题

      在运行的集群中可以从一个索引切换到另一个索引

      可以给多个索引进行分组

      可以与路由搭配使用

    别名的相关操作

    准备数据阶段

    复制代码
    PUT l1/doc/1
    {
      "title":"我想要睡你"
    }
    
    PUT l2/doc/1
    {
      "title":"你却拿我当兄弟"
    }
    
    PUT l3/doc/1
    {
      "title":"不过,我不介意"
    }
    复制代码

    创建别名  给l1索引创建别名a1(_aliases  actions add)

    复制代码
    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "l1",
            "alias": "a1"
          }
        }
      ]
    }
    复制代码

    查看别名

    GET l1/_alias

    查看结果

    复制代码
    {
      "l1" : {
        "aliases" : {
          "a1" : { }
        }
      }
    }
    复制代码

    删除别名(actions remove)

    复制代码
    POST _aliases
    {
      "actions": [
        {
          "remove": {
            "index": "l1",
            "alias": "a1"
          }
        }
      ]
    }
    复制代码

    重命名别名(淘汰旧的索引上的别名,生成新的索引上的别名)

    复制代码
    POST _aliases
    {
      "actions": [
        {
          "remove": {
            "index": "l1",
            "alias": "a1"
          }
        },
        {
          "add": {
            "index": "l2",
            "alias": "a1"
          }
        }
      ]
    }
    复制代码

    为多个索引指向同样的别名(证实为多个索引分组)

    复制代码
    POST _aliases
    {
      "actions": [
        {"add": {"index": "l1", "alias": "a1"}},
        {"add": {"index": "l2", "alias": "a1"}},
        {"add": {"index": "l3", "alias": "a1"}}
      ]
    }
    复制代码

    使用indeices数组语法在一个操作中为多个索引指向别名

    多个索引指向同一别名

    复制代码
    POST _aliases
    {
      "actions": [
        {"add": {"indices": ["l1", "l2", "l3"], "alias": "a2"}}
      ]
    }
    复制代码

    一个索引指向多个别名

    复制代码
    POST _aliases
    {
      "actions": [
        {"add": {"index": "l1", "aliases": ["a1", "a2", "a3"]}}
      ]
    }
    复制代码

    将别名关联到拥有公共名称的索引(将索引 l1 l2 l3指向f1别名)

    复制代码
    POST _aliases
    {
      "actions": [
        {"add": {"index": "l*", "alias": "f1"}}
      ]
    }
    复制代码

    别名交换

    复制代码
    POST _aliases
    {
      "actions": [
        {"add": {"index": "l1", "alias": "a1"}},
        {"remove_index":{"index":"a1"}}
      ]
    }
    
    # 就像删除a1别名
    复制代码

    过滤器别名

    1.自定义索引

    2.插入数据

    3.普通查询和根据别名查询

    复制代码
    PUT l4
    {
      "mappings": {
        "doc":{
          "properties":{
            "year":{
              "type":"integer"
            },
            "method":{
              "type":"keyword"
            }
          }
        }
      }
    }
    
    
    PUT l4/doc/1
    {
      "year":2019,
      "method":"GET"
    }
    PUT l4/doc/2
    {
      "year":2018,
      "method":"POST"
    }
    PUT l4/doc/3
    {
      "year":2019,
      "method":"POST"
    }
    
    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "l4",
            "alias": "a4",
            "filter": {
              "term": {
                "year": 2019
              }
            }
          }
        }
      ]
    }
    
    GET l4/doc/_search
    GET a4/doc/_search
    复制代码

    此时两种查询结果不同(带有过滤的只返回2019,而普通查询会全部返回)

    与路由连用

    简单实例

    复制代码
    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "l4",
            "alias": "a4",
            "routing": "2"
          }
        }
      ]
    }
    复制代码

    再列举一个

    复制代码
    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "l4",
            "alias": "a4",
            "search_routing": "1,2",
            "index_routing": "1"
          }
        }
      ]
    }
    复制代码
    GET a4/doc/_search?q=year:2019&routing=2
    # 取交集2

    写索引(如果多个索引指向一个别名,通过别名写索引,不指定es不知道)

    复制代码
    POST _aliases
    {
      "actions": [
        {
          "add": {
            "index": "l1",
            "alias": "a1",
            "is_write_index": true
          }
        },
        {
          "add": {
            "index": "l2",
            "alias": "a1"
          }
        }
      ]
    }
    复制代码

    添加单个别名

    PUT {index}/_alias/{name}
    PUT {index}/_alias/{name}?routing=user1
    • index,要为哪个索引添加别名。
    • name,别名的名称。
    • routing,可以与别名关联的路由。

    删除别名

    DELETE l1/_alias/a1
    DELETE l2/_aliases/a*

    检索现有别名

    GET l1/_alias/a*    # 查询索引l1指向以a开头的所有别名
    GET l1/_alias/*     # 查询索引l1所有的别名

    查询所有别名是a1

    GET /_alias/a1

    HEAD检测别名是否存在

    GET _cat/aliases
    HEAD _alias/a1

    转自:https://www.cnblogs.com/Alexephor/p/11413722.html

  • 相关阅读:
    Tuxedo 介绍
    winform如何不卡界面
    银行基金代销系统调研
    如何在wcf中用net tcp协议进行通讯
    20190710用控制台启动一个wcf服务
    wcf必知必会以及与Webapi的区别
    2019年7月第一周总结-RabbitMQ总结
    RabbitMQ入门学习系列(七) 远程调用RPC
    RabbitMQ入门学习系列(六) Exchange的Topic类型
    RabbitMQ入门学习系列(五) Exchange的Direct类型
  • 原文地址:https://www.cnblogs.com/tjp40922/p/12907335.html
Copyright © 2011-2022 走看看