ElasticSearch 高效能分布式搜尋引擎

2021-10-03 00:10:50 字數 2692 閱讀 6052

elasticsearch(簡稱 es)是一款高效能的實時分布式搜尋和分析引擎,它可以從海量資料中快速的找到相關資訊。作為一款功能強大的分布式搜尋引擎,支援近實時的儲存、搜尋資料。被許多公司廣泛的應用

elasticsearch 有幾個核心概念,這裡先講解幾個概念,對下面的學習過程比較有幫助

型別表示的資料型別

string

string

whole number

byte,short,integer,long

floating point

float,double

boolean

boolean

date

date

elasticsearch 預設啟動埠是 9200,測試 elasticsearch 是否啟動成功,訪問 http://localhost:9200,如果瀏覽器返回以下資訊證明啟動成功

,"tagline"

:"you know, for search"

}

任何程式都能使用 restful api,通過 9200 埠與 elasticsearch 進行通訊。向 elasticsearch 發出的請求的組成部分與其他普通的 http 請求是一樣的,舉例說明,想要計算集群中的文件數量,我們可以這樣做: }}

'elasticsearch 返回乙個類似 200 ok 的 http 狀態碼和 json 格式的響應主題(除了 head 請求)。上面的請求會得到如下的 json 格式的相應主體:

}

為簡單起見,下面統一將請求簡寫成這樣

get /_count

}}

下面演示如何通過 elasticsearch 進行資料的儲存與檢索,假設我們要儲存一些員工資料,先建立員工索引

post /employee

, "last_name":,

"age":,

"about":,

"interests":}

}}

post /employee/_doc/1

可以看到 path:/employee/_doc/1 包含三部分資訊

名字說明

employee

索引名稱

_doc

文件型別,es 7 之後取消自定義文件型別,這裡可以簡單理解為乙個關鍵字

1這個員工的id

很簡單吧,接下來準備多2條員工資料

post /employee/_doc/2

post /employee/_doc/3

get /employee/_doc/1
響應的內容中包含一些文件的元資訊,john smith的原始json文件包含在 _source 欄位中

}

上面是直接根據 id 搜尋,下面讓搜尋稍微再變的複雜一些。我們依舊想要找到姓氏為「smith」的員工,但是我們只想得到年齡大於30歲的員工。複雜搜尋中的請求關鍵字是_search,我們的語句將新增過濾器(filter),它使得我們高效率的執行乙個結構化搜尋:

get /megacorp/employee/_search }},

}]}}

}

<1> 這部分查詢屬於「區間過濾器」(range filter),它用於查詢所有年齡大於 30 歲的資料

<2> 這部分查詢用於查詢 last_name 為 smith 的資料

整條查詢語句的意思就是查詢出「在employee索引哩查處年齡大於30歲,姓氏為smith的員工「

elasticsearch 返回結果為

,"hits":,

"max_score"

:1.4700036

,"hits":[

}]}}

如果說上面的功能都很簡單的話,那麼接下來的搜尋就是傳統資料庫很難實現的功能。如搜尋喜歡「rock climbing"的員工:

get /employee/_search

}}

該查詢會得到兩個匹配文件:

,"hits":,

"max_score"

:1.4167401

,"hits":[

},}]

}}

可以看到返回的兩條文件都有乙個 _score 字段,該字段為結果相關性評分,所謂結果相關性評分就是文件與查詢條件的匹配程度,得分越高表示匹配相關性越高

我們搜尋的是 about 欄位有 」rock climbing「 關鍵字的文件,但是 jane smith 為什麼也會出現在結果中呢?這是因為 jane smith 的 about 欄位中也有 「rock」 關鍵字,所以它他也會被檢索到,但是結果相關性評分比較低

這個例子很好的解釋了 elasticsearch 是如何在各種文字欄位中進行全文搜尋,並返回相關性結果結合的。相關性(relevance)的概念在elasticsearch中非常重要,而這個概念在傳統關 系型資料庫中是不可想象的,因為傳統資料庫對記錄的查詢只有匹配或者不匹配

Elasticsearch高版本安裝head外掛程式

1.安裝elasticsearch 6.5.4.tar.gz merce info5 config cp elasticsearch.yml elasticsearch.yml.bak merce info5 config vim elasticsearch.yml 在檔案尾部新增以下引數 clus...

Elasticsearch (九)搜尋排序和高亮

準備測試案例 delete blog put blog title content postdate put blog article 1 put blog article 2 put blog article 3 put blog article 4 put blog article 5 1.ma...

Elasticsearch2 3 高可用集群

2.集群搭建 windows版 3.集群測試 定義標識 乙個集群就是由乙個或多個節點組織在一起,它們共同持有整個的資料,並一起提供索引和搜尋功能。乙個集群由乙個唯一的名字標識,這個名字預設就是 elasticsearch 這個名字是重要的,因為乙個節點只能通過指定某個集 群的名字,來加入這個集群。定...