Elasticsearch索引按月划分以及獲取所有索引數據


項目中數據庫根據月份水平划分,由於沒有用數據庫中間件,沒辦法一下查詢所有訂單信息,所有用Elasticsearch做訂單檢索。

Elasticsearch索引和數據庫分片同步,也是根據月份來建立索引。

思路:

  1. 建立索引時用“order_yyyyMM”命名;
  2. 為這些訂單索引建立別名“order”;
  3. 寫數據時把數據寫到對應的月份索引,讀時根據別名讀取,就可以查詢到所有訂單數據;

對索引分片也可以根據業務靈活的刪除老數據。

具體實現需要用到模板,

template可以修改索引的默認配置。我們以下面這個template為例說明一下。

  1. 建立一個template名稱為order_template
  2. "template": "order*",表示對於所有以order*開頭的索引,默認配置使用template中的配置。
  3. "settings","mappings","aliases",可以修改這些類型的默認配置
curl -XPUT "http://localhost:9200/_template/order_template?pretty" -d '{
  "template": "order*",
  "settings": {
    "number_of_shards": 10
  },
  "mappings": {
    "data": {
      "_source": {
        "enabled": false
      },
      "properties": {
        "name": {
          "type": "string",
          "index": "not_analyzed"
        },
        "id": {
          "type": "long"
        }
      }
    }
  },
  "aliases": {"order":{}}
}'

  設置模板后,每次創建order索引,就會自動關聯別名,讀數據時就可以通過別名一下把所有數據都獲取到。

 

 


免責聲明!

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



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