建立索引庫
es作為乙個索引及搜尋服務,對外提供豐富的rest介面,快速入門部分的例項使用head外掛程式來測試,目的是對es 的使用方法及流程有個初步的認識。
關於索引這個語:
索引(名詞):es是基於lucene構建的乙個搜尋服務,它要從索引庫搜尋符合條件索引資料。
索引(動詞):索引庫剛建立起來是空的,將資料新增到索引庫的過程稱為索引。
下邊介紹兩種建立索引庫的方法,它們的工作原理是相同的,都是客戶端向es服務傳送命令
使用postman或者kibana 建立:put http://localhost:9200/索引庫名稱
}}
使用head外掛程式建立
number_of_shards: 設定分片的數量,在集群中通常設定多個分片,表示乙個索引庫將被拆分為別儲存在不同的節點,提高了es的處理能力和高可用性,這裡是單機環境設定為1建立對映number_of_replicas: 設定副本的數量,設定副本是為了提高es的高可用性,單機環境設定為0
在索引中每個文件都包括乙個或多個field,建立對映就是向索引庫中建立field的過程,下邊是document和field與關聯式資料庫的概念類筆
文件----> row記錄;字段(field)---->colums列
注意:6.0之前的版本都有type型別概念,type相當於關聯式資料庫的表,es官方將在9.0版本中徹底刪除type建立對映語法上面講的建立索引相當於資料庫中的資料庫還是表
如果相當於資料庫就表示乙個索引庫可以建立很多不同型別的文件
如果相當於表,就表示乙個索引庫只能儲存型別相同的文件,es官方建議,在乙個索引庫中只儲存相同型別的文件
#post
建立文件#id 使用者可以不填寫,如不傳es會自動生成id
#put/post:
ip:埠/索引庫名稱/型別名稱/id
搜尋文件
根據id查詢
# get
ip:埠/索引庫名稱/type/id
查詢所有記錄ip:埠/索引庫名稱/type/search
查詢名稱中包括spring的關鍵字#get
ip:埠/索引庫名稱/type/search?q=name:spring
,"hits":}
]}}
took: 本次操作花費的時間,單位為毫秒
time_out: 請求超時
_shards: 說明本次操作共搜尋操作了那些分片
hits: 搜尋命中記錄
hit.total: 符合條件的文件的總數
hit.hits:匹配度較高的請n個文件
hit.max_score: 文件匹配得分,這裡為最高分
_score: 每個文件都有乙個匹配得分,按照降序排列
_source: 顯示了文件原始顯示內容
常見對映型別
core
string
text and keyword
numeric datatypes
long,integer,short,byte,double,float,haif_float,scaled_float
date datatype
date
boolean datatype
boolean
binary datetype
binary
range datatypes
inter_range,float_range,long_range,double_range,date_ra
設定是否分詞
字串包括text和keyword兩種型別,使用analyzer屬性可以指定字串分詞方式
"name"
:
指定在索引和搜尋時,都使用ik_max_word分詞器,如果想單獨定義搜尋時使用的分詞器則可以通過search_analyzer屬性
"name"
:
設定字段是否參與索引"pic"
:
設定是否在source之外儲存
是否在source之外儲存,每個文件索引後會在es中儲存乙份原始文件,存放在「_source」中,一般情況下不需要設定store為true,因為_source中已經有乙份原始文件了
注意:keyword欄位為關鍵字,通常搜尋關鍵字按照整體搜素,所以在建立索引時,指定不進行分詞時間型別
"name":
日期型別不用設定分詞器.通常日期型別的字段用於排序;通常使用format欄位設定日期格式
}}
數值型別
盡量選擇範圍小的型別,提高搜尋效率
對於浮點數盡量用比列因子,比如乙個**字段,單位為元,我們將比例因子設定為100;這樣在es中會按分 儲存,對映如下:
"price"
:
因為比例因子為100,如果我們輸入的**為23.45則es會將23.45乘以100儲存到es中;如果輸入的**是23.456;es會將23.456乘以100再取乙個接近的原始值的數,得出2346;使用比例因子的好處是整型比浮點型更容易壓縮,節省磁碟空間 分治 快排 快選
快排模板 include using namespace std const int n 1e5 10 int n,a n void quick sort int q,int l,int r quick sort q,l,j quick sort q,j 1,r intmain 快速選擇演算法 選擇...
快重傳和快恢復
比如傳送方傳送了1,2,3,4四個報文,2 3 4先後到達接收方,由於接收方收到的是三個失序的報文,就會連續發3個ack為1的報文,表示希望收到報文1。當傳送方接收到1個這樣的冗餘報文時,不採取任何措施,直到收到3個冗餘報文,才認定報文1丟失,此時馬上重傳報文1而不是等待1的超時重傳。這就是快重傳。...
快重傳與快恢復
快重傳演算法首先要求接收方每收到乙個失序的報文段後就立即發出重複確認 為的是使傳送方及早知道有報文段沒有到達對方 而不要等待自己傳送資料時才進行捎帶確認。快重傳示意圖如下 如上圖所示,接收方收到了 m1 和 m2 後都分別發出了確認。現假定接收方沒有收到 m3 但接著收到了 m4。顯然,接收方不能確...