1. 程式人生 > 其它 >es 索引別名

es 索引別名

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