官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html
參考文檔:https://github.com/13428282016/elasticsearch-CN/wiki/es-setup--elasticsearch
Elasticsearch :是一個分布式、可擴展、實時的搜索與數據分析引擎。 它能從項目一開始就賦予你的數據以搜索、分析和探索的能力,這是通常沒有預料到的。 它存在還因為原始數據如果只是躺在磁盤里面根本就毫無用處。
ES:是一個高擴展的、開源的、全文檢索的搜索引擎,它提供了近實時的索引、搜索、分析功能。
應用場景
1 它提供了強大的搜索功能,可以實現類似百度、谷歌等搜索。
2 可以搜索日志或者交易數據,用來分析商業趨勢、搜集日志、分析系統瓶頸或者運行發展等等
3 可以提供預警功能(持續的查詢分析某個數據,如果超過一定的值,就進行警告)
4 分析商業信息,在百萬級的大數據中輕松的定位關鍵信息
1 近實時
ES並不是一個標准的數據庫,它不像MongoDB,它側重於對存儲的數據進行搜索。因此要注意到它 不是 實時讀寫 的,這也就意味着,剛剛存儲的數據,並不能馬上查詢到。
當然這里還要區分查詢的方式,ES也有數據的查詢以及搜索,這里的近實時強調的是搜索....
2 集群
在ES中,對用戶來說集群是很透明的。你只需要指定一個集群的名字(默認是elasticsearch),啟動的時候,凡是集群是這個名字的,都會默認加入到一個集群中。
你不需要做任何操作,選舉或者管理都是自動完成的。
對用戶來說,僅僅是一個名字而已!
3 節點
跟集群的概念差不多,ES啟動時會設置這個節點的名字,一個節點也就是一個ES得服務器。
默認會自動生成一個名字,這個名字在后續的集群管理中還是很有作用的,因此如果想要手動的管理或者查看一些集群的信息,最好是自定義一下節點的名字。
4 索引
索引是一類文檔的集合,所有的操作比如索引(索引數據)、搜索、分析都是基於索引完成的。
在一個集群中,可以定義任意數量的索引。
5 類型
類型可以理解成一個索引的邏輯分區,用於標識不同的文檔字段信息的集合。但是由於ES還是以索引為粗粒度的單位,因此一個索引下的所有的類型,都存放在一個索引下。這也就導致不同類型相同字段名字的字段會存在類型定義沖突的問題。
在2.0之前的版本,是可以插入但是不能搜索;在2.0之后的版本直接做了插入檢查,禁止字段類型沖突。
6 文檔
文檔是存儲數據信息的基本單元,使用json來表示。
7 分片與備份
在ES中,索引會備份成分片,每個分片是獨立的lucene索引,可以完成搜索分析存儲等工作。
分片的好處:
1 如果一個索引數據量很大,會造成硬件硬盤和搜索速度的瓶頸。如果分成多個分片,分片可以分攤壓力。
2 分片允許用戶進行水平的擴展和拆分
3 分片允許分布式的操作,可以提高搜索以及其他操作的效率
拷貝一份分片就完成了分片的備份,那么備份有什么好處呢?
1 當一個分片失敗或者下線時,備份的分片可以代替工作,提高了高可用性。
2 備份的分片也可以執行搜索操作,分攤了搜索的壓力。
ES默認在創建索引時會創建5個分片,這個數量可以修改。
不過需要注意:
1 分片的數量只能在創建索引的時候指定,不能在后期修改
2 備份的數量可以動態的定義
Elasticsearch 脫穎而出的地方:Elasticsearch 鼓勵你去探索與利用數據,而不是因為查詢數據太困難,就讓它們爛在數據倉庫里面。
結構化搜索(Structured search) 是指有關探詢那些具有內在結構數據的過程
比如日期、時間和數字都是結構化的:它們有精確的格式,我們可以對這些格式進行邏輯操作。比較常見的操作包括比較數字或時間的范圍,或判定兩個值的大小。
文本也可以是結構化的。如彩色筆可以有離散的顏色集合: 紅(red)
、 綠(green)
、 藍(blue)
。一個博客可能被標記了關鍵詞 分布式(distributed)
和 搜索(search)
。電商網站上的商品都有 UPCs(通用產品碼 Universal Product Codes)或其他的唯一標識,它們都需要遵從嚴格規定的、結構化的格式。
結果只能是:存於范圍之中,抑或反之。同樣,對於結構化文本來說,一個值要么相等,要么不等。沒有 更似 這種概念。
當進行精確值查找時, 我們會使用過濾器(filters)。過濾器很重要,因為它們執行速度非常快,不會計算相關度(直接跳過了整個評分階段)而且很容易被緩存
組合過濾器
布爾過濾器
嵌套布爾過濾器
查找多個精確值