文章目錄
一、做者有話要說
elasticsearch是一個基於 Apache Lucene ™ 的開源搜索引擎。不管在開源仍是專有領域,Lucene 能夠被認爲是迄今爲止最早進、性能最好的、功能最全的搜索引擎庫。html
想學習好elasticsearch,首先第一步,就是閱讀官方文檔。目前es的版本有2.x,5.x,6.x,7.x,可見elasticsearch更新多快!!!java
官方文檔連接:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
mysql
點進去看,有些同窗,一會兒就頭暈了。由於是全英語的,不知道如何下手。我寫這一篇的緣由,就是教你如何學習elasticsearch官方文檔的!!!
sql
二、elasticsearch學習的步驟
2.1 elasticsearch的安裝
網上的資料過多,礙於篇幅,略過數據庫
2.2 es安裝軟件 elasticsearch head 安裝
網上的資料過多,礙於篇幅,略過api
具體操做,能夠參考我以前寫的文章:https://blog.csdn.net/qq_34168515/article/details/108428406
服務器
2.3 Query DSL es特定語言
這個是es專門的查詢語言,也是操做es必備的知識,這個是須要掌握的restful
連接:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html數據結構
對於mysql熟悉的人,能夠理解爲mysql的sql語句
es的很是多客戶端,例如:
app
Java REST Client [7.9] — other versions Java API [7.9] — other versions JavaScript API [7.x] — other versions Ruby API [7.x] — other versions Go API .NET API [7.x] — other versions PHP API [7.x] — other versions Perl API Python API eland Client Rust API Community Contributed Clients
Query DSL爲上面客戶端的使用提供參考。
2.4 Mapping
elasticsearch和mysql進行對比
主要是講述,mapping對應elasticsearch的數據結構
連接:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
elasticsearch 雖然是非關係型數據庫,可是也是須要很強的數據結構,並且數據結構mapping一旦初始化以後,就沒法進行修改的。若是要進行修改,只能從新建立索引,也就是從新建立庫
使用elasticsearch head查看索引的數據結構
2.5 Aggregations聚合查詢
首先,咱們必須明確什麼是聚合查詢
有點相似於 SQL 中的 group by 再加一些函數方法的操做。可是要強大不少。
2.6 elasticsearch rest api
rest api,顧名思義,就是restful風格接口的api,這個是對於咱們開發來講,是很是重要的
常⽤的HTTP動詞有下面五個 GET(SELECT):從服務器取出資源(⼀項或多項)。 POST(CREATE):在服務器新建⼀個資源。 PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。 PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。 DELETE(DELETE):從服務器刪除資源。
三、elasticsearch的專業術語
能夠參考我以前的文章:https://blog.csdn.net/qq_34168515/article/details/108315484
我挑幾個重要的來進行說明
3.1 索引(index)
⼀個索引就是⼀個擁有幾分類似特徵的⽂檔的集合。 至關於MySQL中的數據庫
3.2 映射類型(mapping type)
在⼀個索引中,你能夠定義⼀種或多種類型。⼀個類型是你的索引的⼀個邏輯上的分類/分區,其語義徹底由你來定。一般,會爲具備⼀組共同字段的⽂檔定義⼀個類型。 相似數據庫表 在7.0以後,類型只有⼀種 _doc
3.3 ⽂檔(document)
⼀個⽂檔是⼀個可被索引的基礎信息單元。至關於MySQL中的數據表中的數據,每⼀條數據就是⼀個⽂檔
3.4 分片和副本(shard & replica)
⼀個索引能夠存儲超出單個結點硬件限制的⼤量數據。⽐如,⼀個具備10億⽂檔的索引佔據1TB的磁盤 空間,⽽任⼀節點都沒有這樣⼤的磁盤空間;或者單個節點處理搜索請求,響應太慢。爲了解決這個問 題,Elasticsearch提供了將索引劃分紅多份的能⼒,這些份就叫作分⽚。當你建立⼀個索引的時候,你 能夠指定你想要的分⽚的數量。每一個分⽚自己也是⼀個功能完善而且獨⽴的「索引」,這個「索引」能夠被 放置到集羣中的任何節點上。
分片很重要,主要有兩⽅⾯的緣由:
1)容許你⽔平分割/擴展你的內容容 量。
2)容許你在分⽚(潛在地,位於多個節點上)之上進行分佈式的、並行的操做,進而提⾼性能/吞吐量。
四、java客戶端 Java REST Client
官方地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html