咱們已經經過索引一篇文檔建立了一個新的索引 。
這個索引採用的是默認的配置,新的字段經過動態映射的方式被添加到類型映射。數據庫
Elasticsearch 不要求你在使用一個索引前建立它。 對於日誌記錄類應用,依賴於自動建立索引比手動建立要更加方便。app
Logstash 使用事件中的時間戳來生成索引名。
默認天天被索引至不一樣的索引中,所以一個 @timestamp 爲 2014-10-01 00:00:01 的事件將被髮送至索引 logstash-2014.10.01 中。
若是那個索引不存在,它將被自動建立。elasticsearch
一般咱們想要控制一些新建索引的設置(settings)和映射(mappings)。
也許咱們想要限制分片數爲 1 ,而且禁用 _all 域。
索引模板能夠用於控制何種設置(settings)應當被應用於新建立的索引:post
PUT /_template/my_logs #建立一個名爲 my_logs 的模板。 { "template": "logstash-*", #將這個模板應用於全部以 logstash- 爲起始的索引。 "order": 1, #這個模板將會覆蓋默認的 logstash 模板,由於默認模板的 order 更低。 "settings": { "number_of_shards": 1 # 限制主分片數量爲 1 。 }, "mappings": { "_default_": { "_all": { # 爲全部類型禁用 _all 域。 "enabled": false } } }, "aliases": { "last_3_months": {} # 添加這個索引至 last_3_months 別名中。 } }
這個模板指定了全部名字以 logstash- 爲起始的索引的默認設置,不論它是手動仍是自動建立的。 若是咱們認爲明天的索引須要比今天更大的容量,咱們能夠更新這個索引以使用更多的分片。ui
這個模板還將新建索引添加至了 last_3_months 別名中,然而從那個別名中刪除舊的索引則須要手動執行。spa
刪除指定的索引 DELETE /my_index 刪除多個索引 DELETE /index_one,index_two DELETE /index_* DELETE /_all DELETE /*
可以用單個命令來刪除全部數據可能會致使可怕的後果。
若是你想要避免意外的大量刪除,
你能夠在你的 elasticsearch.yml 作以下配置: action.destructive_requires_name: true
最重要的兩個設置日誌
咱們能夠建立只有 一個主分片,沒有副本的小索引code
PUT /my_temp_index { "settings": { "number_of_shards" : 1, "number_of_replicas" : 0 } }
咱們能夠用 update-index-settings API 動態修改副本數blog
PUT /my_temp_index/_settings { "number_of_replicas": 1 }
類型 在 Elasticsearch 中表示一類類似的文檔。
類型由 名稱 —好比 user 或 blogpost —和 映射 組成。索引
映射, 就像數據庫中的 schema ,描述了文檔可能具備的字段或 屬性 、
每一個字段的數據類型—好比 string, integer 或 date —以及Lucene是如何索引和存儲這些字段的。
Elasticsearch 類型是 以 Lucene 處理文檔的這個方式爲基礎來實現的。
一個索引能夠有多個類型,這些類型的文檔能夠存儲在相同的索引中。
Lucene 沒有文檔類型的概念,每一個文檔的類型名被存儲在一個叫 _type 的元數據字段上。 當咱們要檢索某個類型的文檔時,
Elasticsearch 經過在 _type 字段上使用過濾器限制只返回這個類型的文檔。
Lucene 也沒有映射的概念。 映射是 Elasticsearch 將複雜 JSON 文檔 映射 成 Lucene 須要的扁平化數據的方式。
例如,在 user 類型中, name 字段的映射能夠聲明這個字段是 string 類型,而且它的值被索引到名叫 name 的倒排索引以前,須要經過 whitespace 分詞器分析:
有兩種方式管理別名: _alias 用於單個操做, _aliases 用於執行多個原子級操做。
咱們假設你的應用有一個叫 my_index 的索引。事實上, my_index 是一個指向當前真實索引的別名。真實索引包含一個版本號: my_index_v1 , my_index_v2 等等
PUT /my_index_v1 PUT /my_index_v1/_alias/my_index
查詢索引別名指向的索引
GET /*/_alias/my_index
哪些別名指向這個索引
GET /my_index_v1/_alias/*
一個別名能夠指向多個索引,因此咱們在添加別名到新索引的同時必須從舊的索引中刪除它。這個操做須要原子化,這意味着咱們須要使用 _aliases 操做:
POST /_aliases { "actions": [ { "remove": { "index": "my_index_v1", "alias": "my_index" }}, { "add": { "index": "my_index_v2", "alias": "my_index" }} ] }