本文翻譯自elasticsearch官方指南的索引管理(index management)一章
我們已經了解了es是如何在不需要任何複雜的計畫和安裝就能讓我們很容易地開始開發乙個新的應用的。但是,用不了多久你就會想要仔細調整索引和搜尋過程來更好的適配你的用例。
幾乎所有的定製都和索引(index)以及其中的型別(type)相關。本章我們就來討論用於管理索引和型別對映的api,以及最重要的設定。
因此我們需要手動地去建立索引,將任何需要的設定和型別對映傳入到請求正文中,就像下面這樣:
put /my_index
,: ,
"type_two"
: , ...
}}
事實上,如果你想阻止索引被自動建立,可以通過新增下面的設定到每個節點的config/elasticsearch.yml
檔案中:
action.auto_create_index: false
將來,我們會討論如何使用索引模板(index template)來預先定義自動生成的索引。這個功能在索引日誌資料的時候有用武之地:索引的名字中會包含日期,每天都有乙個有著合適配置的索引被自動地生成。
使用下面的請求完成索引的刪除:
delete /my_index
你也可以刪除多個索引:
delete /index_one,index_two
delete /index_*
你甚至還可以刪除所有的索引:
delete /_all
雖然索引的種種行為可以通過索引模組的參考文件介紹的那樣進行配置,但是……
tip兩個最重要的設定:es中提供了一些很好的預設值,只有當你知道它是幹什麼的,以及為什麼要去修改它的時候再去修改。
乙個索引中含有的主分片(primary shard)的數量,預設值是5。在索引建立後這個值是不能被更改的。
每乙個主分片關聯的副本分片(replica shard)的數量,預設值是1。這個設定在任何時候都可以被修改。
比如,我們可以通過下面的請求建立乙個小的索引 - 只有乙個主分片 - 同時沒有副本分片:
put /my_temp_index
}
將來,我們可以動態地通過update-index-settings api完成對副本分片數量的修改:
put /my_temp_index/_settings
第三個重要的索引設定就是解析(analysis),可以利用已經存在的解析器(analyzer)進行配置,或者是為你的索引定製新的解析器。
在解析和解析器中,我們介紹了一些內建的解析器,它們用來將全文本串轉換成適合搜尋的倒排索引(inverted index)。
對於全文本串字段預設使用的是standard
解析器,它對於多數西方語言而言是乙個不錯的選擇。它包括:
預設下stopwords過濾器沒有被使用。可以通過建立乙個基於standard
解析器的解析器並設定stopwords
引數來啟用。要麼提供乙個stopwords的列表或者告訴它使用針對某種語言預先定義的stopwords列表。
在下面的例子中,我們建立了乙個名為es_std
的解析器,它使用了預先定義的西班牙語中的stopwords列表:
put /spanish_docs}}
}}
es_std
解析器不是全域性的 - 它只作用於spanish_docs
索引。可以通過制定索引名,使用analyze
api進行測試:
get /spanish_docs/_analyze?analyzer=es_std
下面的部分結果顯示了西班牙語中的stopwordel
已經被正確地移除了:
,
,]}
Elasticsearch索引建議
背景 最近在做日誌收集,用到elasticsearch作為儲存層,因為日誌量比較大,一天近2t,所以每時每刻都會有大量的插入操作。又由於是給開發人員查日誌使用,所以查詢的量比較小。受限於儲存空間,目前僅保留7天的日誌,多數為乙個業務模組乙個索引,按天切分索引。關於索引和型別的取捨,建立多個索引還是乙...
elasticsearch 建立索引
介紹 分詞器 analyzer 包括乙個分解器 tokenizer 和多個詞元過濾器 filter 詞元過濾器的作是對分詞器提取的詞元進一步處理,比如轉成小寫,使用edge ngram,同義詞等,處理之後成為索引詞 term 文件正包含了幾個這樣的term成為frequency 詞頻 分解器 tok...
Elasticsearch 索引例項
elasticsearch包含了一系列的感念,比如索引 indexing 搜尋 search 以及聚合 aggregations 現在我們主要介紹indexing。在elasticsearch中,文件歸屬於一種型別 type 而這些型別存在於索引 index 中,我們可以畫一些簡單的對比圖來模擬傳統...