一般都用數據庫存儲數據,然后對數據庫進行查詢獲取數據,但是當數據量很大時,查詢效率就會很慢(具體下面會講到),所以這種情況下就會使用到ElasticSeach
ElasticSeach的基本介紹
ElasticSeach是一 款非常強大的開源搜索引擎技術 ,可以幫助我們從海量數據中快速找到需要的內容?
在日常生活中,有很多會用到ElasticSeach的場景,比如網購時在輸入框輸入關鍵字搜索出來的商品、百度問的問題、訂外賣時搜吃的……類似這種在海量數據中搜索查詢指定數據的場景,都會用到ElasticSeach
elasticsearch 結合??kibana 、 Logstash 、 Beats,組件,統稱為?elastic stack (ELK) ,其實就是elasticsearch的技術棧。被廣泛應用在日志數據分析 、 實時監控等領域
還有其他的搜索引擎技術,不過elasticsearch目前應該是最好用的
正向索引和倒排索引
正向索引
倒排索引?

?ElasticSeach中的一些基本概念
文檔
索引和映射
數據庫和ElasticSeach對比
利用DSL語句操作ES
?在kibana上通過發送請求進行增刪改查操作,關于安裝請自行百度,或者參考:elasticsearch和kibana的安裝
kibana客戶端如下圖
索引庫的增刪改查操作
ES中的索引庫,指的就是索引,對應為數據庫中表的概念。我們要向數據表中存儲數據,首先應該創建表,在創建表時會對表做一些約束,如表中各字段的類型、是否不為空等等。相應的,我們要把文檔(前面說過文檔類似于表中的一行數據)存儲到索引庫中,就要先創建索引,同樣在創建索引時會對索引做一些約束。
創建好一個帶有指定約束的索引A后,這些約束就會在創建文檔并把文檔存入索引A時起作用,這個過程就叫mapping映射。還是以數據表舉例,一個用戶表有姓名和年齡兩個字段,類型分別為字符串和整形,那么往這個用戶表存一條用戶數據時,就會校驗這條用戶數據是否符合用戶表的約束,符合的話就是用戶數據和用戶表的約束是一一映射的(希望我能解釋清楚映射的意思,因為我自己一開始不太懂這個概念)。文檔和索引的處理過程和用戶數據用戶表的處理過程很像
mapping映射
創建索引庫
刪除、查看索引庫
修改索引庫
文檔增刪改查操作
新增文檔
查看、刪除文檔
修改文檔
利用RestClient操作ES
RestClient簡介
操作索引庫
具體操作看視頻吧,因為是案例不好做筆記,視頻里是基于Java語言的操作
?restclient操作ES
操作文檔
一樣,看視頻:?操作文檔
elasticsearch查詢文檔
用DSL查詢
query查詢分類
查詢所有?
精確查詢?
?gte表示大于等于,lte表示小于等于,gt表示大于,lt表示小于
?地理查詢
方法一,適合地圖找房之類的需求?
方法二,適合我的附近這種需求,其中我的就是中心點的位置,附近就是看設置的距離值?
復合查詢
function_score 在原始查詢結果的基礎上,人為干預搜索結果的排名,即決定哪些文檔比較靠前,哪些比較靠后
視頻?function_score
?
?布爾查詢
視頻??布爾查詢
搜索結果處理
排序
?例子1
例子2:
?
分頁
分頁默認只能查前10000條數據:具體看視頻:分頁查詢上限
高亮
具體的視頻:高亮的用法
對應的RestClient操作參考視頻,視頻是Java版本的:視頻教程
數據聚合
聚合的分類
DSL實現聚合
桶聚合
metrics聚合
自動補全
自動補全就是當我們在搜索引擎或者購物網站的搜索框中輸入一個詞時,出現的提示,一般通過分詞器實現
拼音分詞器
自定義分詞器
?
?