參考**
elasticsearch權威指南:
elasticsearch-sql:
elasticsearch查詢:
elasticsearch multifields說明:
23種非常有用的elasticsearch查詢例子:
推薦書籍
elasticsearch伺服器開發:
資料同步外掛程式
待補充index和type的概念
es和mysql概念對比
乙個es集群可以包含多個索引(資料庫),每個索引又包含了很多態別(表),型別中包含了很多文件(行),每個文件又包含了很多字段(列)。
傳統資料庫為特定列增加乙個索引,例如b-tree索引來加速檢索。elasticsearch和lucene使用一種叫做倒排索引(inverted index)的資料結構來達到相同目的。
倒排索引源於實際應用中需要根據屬性的值來查詢記錄。這種索引表中的每一項都包括乙個屬性值和具有該屬性值的各記錄的位址。由於不是由記錄來確定屬性值,而是由屬性值來確定記錄的位置,因而稱為倒排索引(inverted index)。
關於全文查詢和詞條查詢的說明
儘管所有的查詢都會執行某種程度的相關度計算,並不是所有的查詢都存在解析階段。除了諸如bool或者function_score這類完全不對文字進行操作的特殊查詢外,對於文字的查詢可以被劃分兩個種類:
基於詞條的查詢(term-based queries)
類似term和fuzzy的查詢是不含有解析階段的低階查詢(low-level queries)。它們在單一詞條上進行操作。乙個針對詞條foo的term查詢會在倒排索引中尋找該詞條的精確匹配(exact term),然後對每乙份含有該詞條的文件通過tf/idf進行相關度_score的計算。
尤其需要記住的是term查詢只會在倒排索引中尋找該詞條的精確匹配 - 它不會匹配諸如foo或者foo這樣的變體。它不在意詞條是如何被儲存到索引中。如果你索引了["foo", "bar"]到乙個not_analyzed欄位中,或者將foo bar索引到乙個使用whitespace解析器的解析字段(analyzed field)中,它們都會在倒排索引中得到兩個詞條:"foo"以及"bar"。
全文查詢(full-text queries)
類似match或者query_string這樣的查詢是高階查詢(high-level queries),它們能夠理解乙個欄位的對映:
如果你使用它們去查詢乙個date或者integer欄位,它們會將查詢字串分別當做日期或者整型數。
如果你查詢乙個精確值(not_analyzed)字串字段,它們會將整個查詢字串當做乙個單獨的詞條。
但是如果你查詢了乙個全文本段(analyzed),它們會首先將查詢字串傳入到合適的解析器,用來得到需要查詢的詞條列表。
一旦查詢得到了乙個詞條列表,它就會使用列表中的每個詞條來執行合適的低階查詢,然後將得到的結果進行合併,最終產生每份文件的相關度分值。
Elasticsearch 文章整理
elasticsearch索引生命週期管理方案 managing jaeger and elasticsearch ilm elasticsearch 如何實現查詢 聚合不區分大小寫 elasticsearch 索引管理最佳實踐 你的 elasticsearch 難題,官方文件早就有了答案 幾個el...
ElasticSearch基礎知識整理
分片shards 資料量特大,沒有足夠大的硬碟空間來一次性儲存,且一次性搜尋那麼多的資料,響應跟不上es提供把資料進行分片儲存,這樣方便進行拓展和提高吞吐。副本replicas 分片的拷貝,當主分片不可用的時候,副本就充當主分片進行使用 es中的每個索引預設分配5個主分片和1份副本 如果你的集群中至...
ElasticSearch基礎知識整理
分片shards 資料量特大,沒有足夠大的硬碟空間來一次性儲存,且一次性搜尋那麼多的資料,響應跟不上es提供把資料進行分片儲存,這樣方便進行拓展和提高吞吐。副本replicas 分片的拷貝,當主分片不可用的時候,副本就充當主分片進行使用 es中的每個索引預設分配5個主分片和1份副本 如果你的集群中至...