es 索引别名

别名是指给一个或者多个索引定义另外一个名称,使索引别名和索引之间可以建立某种逻辑关系。

可以用别名表示别名和索引之间的包含关系。例如,我们建立了10月、11月、12月的用户入住酒店的日志索引,假设需要搜索这3个月的日志索引,如果分别去3个索引中进行搜索,这种编码方案比较低效。此时可以创建一个别名4_quarter,设置前面的3个索引的别名为4_quarter,然后在4_quarter中进行搜索即可。

 

创建10_month_log,11_month_log ,12_month_log 3个索引:

复制代码
PUT /10_month_log 
PUT /11_month_log 
PUT /12_month_log 
{ 
    "mappings":{ 
        "properties":{ 
            "uid":{              //用户ID字段 
                "type":"keyword" 
            }, 
            "hotel_id":{         //酒店ID字段 
                "type":"keyword" 
            }, 
            "check_in_date":{     //入住日期字段 
                "type":"keyword" 
            } 
        } 
    } 
}
复制代码

写入文档:

复制代码
POST /10_month_log/_doc/001 
{                                 //写入的文档数据    
  "uid":"001", 
  "hotel_id":"1", 
  "check_in_date":"2021-10-05" 
}
POST /11_month_log/_doc/002 
{                                 //写入的文档数据    
  "uid":"002", 
  "hotel_id":"1", 
  "check_in_date":"2021-11-05" 
}
POST /12_month_log/_doc/003
{                                 //写入的文档数据    
  "uid":"003", 
  "hotel_id":"1", 
  "check_in_date":"2021-12-05" 
}
复制代码

设置上面3个索引的别名为4_quarter,请求的DSL如下:

复制代码
POST /_aliases 
{ 
  "actions": [ 
    { 
      "add": {   //为索引10_month_log建立别名4_quarter
        "index": "10_month_log", 
        "alias": "4_quarter" 
      } 
    }, 
    { 
      "add": {   //为索引11_month_log建立别名4_quarter
        "index": "11_month_log", 
        "alias": "4_quarter" 
      } 
    }, 
    { 
      "add": {   //为索引12_month_log建立别名4_quarter
        "index": "12_month_log", 
        "alias": "4_quarter" 
      } 
    } 
  ] 
}
复制代码

此时,请求在索引4_quarter中搜索hotel_id为1的用户的入住记录,搜索的DSL如下:

GET /4_quarter/_search 
{ 
  "query": { 
    "term": {        //搜索hotel_id为1的文档 
      "hotel_id": "1" 
    } 
  } 
}

 

在默认情况下,当一个别名只指向一个索引时,写入数据的请求可以指向这个别名,如果这个别名指向多个索引,则写入数据的请求是不可以指向这个别名的。

ES不能确定向4_quarter写入数据时的转发对象。这种情况需要在别名设置时,将目标索引的is_write_index属性值设置为true来指定该索引可用于执行数据写入操作。例如设置12_month_log为数据写入转发对象,对应的DSL如下:

复制代码
POST /_aliases 
{ 
  "actions": [ 
    { 
      "add": {  //设置12_month_log为索引别名4_quarter的数据写入转发对象 
        "index": "12_month_log", 
        "alias": "4_quarter", 
         "is_write_index":true 
      } 
    } 
  ] 
}
复制代码

 

文章参考:Elasticsearch搜索引擎构建入门与实战 --> 3.1.5 索引别名

 

posted @   草木物语  阅读(1944)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2019-12-02 java js url特殊格式处理 json特殊格式处理
点击右上角即可分享
微信分享提示