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 索引別名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM