一、介紹
The Elastic Stack 包含ElasticSearch、Kibana、Beats、LogStash
這就是所說的ELK
能夠安全可靠地獲取任何來源、任何格式的數據,然后實時地對數據進行搜索、分析和可視化。Elaticsearch,簡稱為ES,ES是一個開源的高擴展的分布式全文搜索引擎,是整個ElasticStack技術棧的核心。它可以近乎實時的存儲、檢索數據:本身擴展性很好,可以擴展到上百臺服務器,處理 PB 級別的數據
官方網站:https://www.elastic.co/cn/
下載地址:
1.https://www.elastic.co/cn/downloads/past-releases#elasticsearch
2.https://www.elastic.co/cn/downloads/elasticsearch
ES中內置了Java的環境,但是我們一般會使用我們本地安裝的Java環境
注意:9300端口為Elasticsearch集群間組件的通信端口,9200端口為瀏覽器訪問的http協議的RestFul端口
訪問一下http://localhost:9200/頁面,出現下面的情況
二、入門
Elasticsearch是面向文檔型數據庫,一條數據在這里是一個文檔
在ES里的index可以看作是一個庫,而Types相當于表,Documents則相當于表的行
這里的Types的概念已經被主鍵弱化,在ElasticSearch6.X中的一個index下已經只能包含一個type,Elasticsearch7.X中Type的概念已經被刪除了
2.1 索引
2.1.1 倒排索引
倒排索引的查詢效率是比較快的,并且沒有體現表的概念
我們之前是通過id關聯內容
但是現在我們引入了關鍵字,關鍵字會關聯id,id再關聯內容
2.1.2 創建索引
創建索引,就是類似在Mysql中創建一個數據庫
啟動ES服務
發送PUT請求 http://127.0.0.1:9200/shopping
shopping:表示的就是索引的名稱
2.1.3 查詢索引
獲取某個索引
獲取全部索引
2.1.4 刪除索引
2.2 文檔
2.2.1 創建文檔
索引我們已經創建好了,我們下面會創建文檔并添加數據
這里的文檔可以類比為關系型數據庫中的表數據,添加的數據格式為JSON格式
返回值中“_id”就是我們唯一性標識
我們可以自定義id
2.2.2 查詢文檔
查詢單個信息
查詢全部的信息
2.2.3 全量修改
全量更新使用的不多
2.2.4 局部修改
更新不是冪等性的
2.2.5 刪除文檔
2.2.6 條件查詢
但是我們一般使用請求體查詢
如下所示
2.2.7 分頁查詢
可以指定某個字段顯示
也可以再進行排序
2.2.8 全文檢索
這個地方我們搜索的是“小華”,但是在全文檢索的時候,被分成了“小”和“華”
2.2.9 完全匹配
這個時候就是精準的匹配
2.2.10 高亮查詢
2.2.11 多條件查詢
我們也可以進行多條件查詢,這個地方有點復雜
”must“表示多條件要同時成立,多一個條件,再must數組中添加一個參數即可
{"query": {"bool": {"must": [{"match": {"category": "小米"}},{"match": {"price": 1999.00}}]}}
}
也可以對價格進行范圍查詢
{"query":{"bool":{"must":[{"match":{"category":"小米"}}],"filter":{"range":{"price":{"gt":5000}}}}}
}
2.2.12 聚合查詢
2.3 映射關系
首先我們先創建一個索引user
下面我們創建一些規則
然后我們再get一下
下面再創建一個文檔
查詢的時候我們發現搜“男”是搜不到的,因為sex是全量查詢的
對于這個地方我們只能搜“男的”