Elasticsearch 相關資料收集

2022-04-07 02:37:44 字數 3469 閱讀 9711

先留個坑,詳細內容後續補;

書籍:社群:

elasticsearch中文社群

1.elasticsearch:

windows下elasticsearch 安裝

linux下elasticsearch安裝

2.curl:

windows下curl安裝

linux下curl安裝

3.kibana:

windows下的kibana安裝

linux下kibana安裝

4.sense:

在 kibana5.x版本以後,sense都預設整合到kibana中,不需要手動安裝(安裝也安裝不成功),錯誤參考stackoverflow一篇:

如果你使用的是低於kibana5.x的版本,那麼參考該文章:windows下為kibana安裝sense外掛程式

在es 6.x之後, 1個index中只能對映乙個type.否則會報錯

詳情見:

5.elasticsearch-head外掛程式

搜尋的語法:

空搜尋:get /_search?timeout=10ms   得出所有_index 所有_type中的文件資訊

限制搜尋_index或者_type,如果有多個需使用,隔開 , 位址的順序為:/_index/_type/id........

/gb/_searchgb索引中搜尋所有的型別

/gb,us/_searchgbus索引中搜尋所有的文件

/g*,u*/_search在任何以g或者u開頭的索引中搜尋所有的型別

/gb/user/_searchgb索引中搜尋user型別

/gb,us/user,tweet/_searchgbus索引中搜尋usertweet型別

/_all/user,tweet/_search在所有的索引中搜尋usertweet型別

搜尋分頁:

和 sql 使用limit關鍵字返回單個page結果的方法相同,elasticsearch 接受

fromsize引數:

size顯示應該返回的結果數量,預設是10from顯示應該跳過的初始結果數量,預設是0

如果每頁展示 5 條結果,可以用下面方式請求得到 1 到 3 頁的結果: 

get /_search?size=5get /_search?size=5&from=5get /_search?size=5&from=10

搜尋api分類:

1.「輕量的」 查詢字串

2. 使用json請求體

查詢字串:

例如,查詢在tweet型別中tweet字段包含elasticsearch單詞的所有文件:

get /_all/tweet/_search?q=tweet:elasticsearch

如果查詢條件中有多個字段,則需要使用空格分割:

get /_all/tweet/_search?q=tweet:elasticsearch name:john

可以對欄位使用+ 或 - 修飾:

+字首表示必須與查詢條件匹配

-字首表示一定不與查詢條件匹配

沒有+或者-的所有其他條件都是可選的

get /_search?q=+name:mary

_all欄位:

如果在查詢條件中沒有明確指定查詢欄位名稱,則預設是搜尋_all欄位

而_all欄位的值就是該文件中其他欄位的值組合拼成的大字串,例如:

此時_all的字段的值為:

"however did i manage before elasticsearch? 2014-09-14 mary jones 1"

多欄位複雜的查詢組合:

get /us/tweet/_search?q=+name:(mary john) +date:>2014-09-10 +(aggregations geo)

上句語句的查詢條件是:

查詢字元做了編碼後,可讀性會變得很差:

查詢字串在做了適當的編碼後,可讀性很差:

輕量字串查詢優缺點分析:

優點:1.可以很方便即席查詢

2.查詢語法簡潔

缺點:1.一些查詢字串中很小的語法錯誤,像-:/或者"不匹配等,將會返回錯誤而不是搜尋結果。 

2.編碼後可讀性差

3.查詢字串搜尋允許任何使用者在索引的任意欄位上執行可能較慢且重量級的查詢,這可能會暴露隱私資訊,甚至將集群拖垮。

官方建議:不推薦直接向使用者暴露查詢字串搜尋功能,除非對於集群和資料來說非常信任他們。所以生產中還是使用request body查詢為主,不僅可以達到相同功能,還具有額外的功能!

elasticsearch中的資料分為兩類: 精確 / 全文,  

精確包括日期(date型別)或使用者id(long 型別) , 搜尋要麼匹配要麼不匹配, 而全文一般指文字資料(text型別)

請求體查詢:

單一查詢:

get /_search

}}

組合查詢:

get /_search

},"must_not":

},"should":

},"filter": }}

}}

}

使用bool語句組合其他條件的查詢,bool可以包含的關鍵字有

must    :必需包含

must_not  :必需不包含  

should    :包含會增加匹配度,增加_score的分值(加分),不包含也無所謂

filter     :過濾掉不滿足條件的資料

官方建議:不推薦直接向使用者暴露查詢字串搜尋功能,除非對於集群和資料來說非常信任他們。所以生產中還是使用request body查詢為主,不僅可以達到相同功能,還具有額外的功能!

ElasticSearch相關概念

節點 node 物理概念,乙個執行的elasticearch例項,一般是一台機器上的乙個程序。分片 shard 為了支援更大量的資料,索引一般會按某個維度分成多個部分,每個部分就是乙個分片,分片被節點 node 管理。乙個節點 node 一般會管理多個分片,這些分片可能是屬於同乙份索引,也有可能屬於...

elasticsearch相關筆記

elasticsearch kibana nginx將原索引的資料reindex到新索引 post reindex dest 刪除原索引 delete vehicle info將新索引資料再次reindex回舊索引 post reindex dest 刪除新索引 然後在後台 bulk資料時,加上新的...

elasticsearch 優化相關

es寫入過程關鍵步驟 資料寫入index buffer緩衝和translog日誌檔案。index buffer indices.memory.index buffer size 大小預設是heap的10 最小值為48m。每隔一秒鐘 index.refresh interval index buffe...