分布式搜索ElasticSearch-ES(一)

一、ElasticSearch介紹

ES是一款非常強大的開源搜索引擎,可以幫我們從海量的數據中快速找到我們需要的內容。

ElasticSearch結合kibana、Logstash、Beats,也就是elastic stack(ELK),被廣泛運用在日志數據分析,實時監控等領域。

ES負責數據 存儲、計算、搜索數據

LogStash和Beats負責 數據抓取

Kibana 是數據可視化組件

Lucence是ES的底層開發,java語言搜索引擎類庫,是Apache公司頂級項目。

Lucence優勢:

  1. 易擴展。
  2. 高性能。(基于倒排索引)

缺點:

  1. 只限于java語言開發。
  2. 學習難度高,曲線陡峭。
  3. 不支持水平擴展。

于是在lucence的基礎上,ES優點:

  1. 支持分布式,可水平擴展。
  2. 提供restful接口,被任何語言調用。

什么是ElasticSearch?

一個開源的分布式搜索引擎,可以實現日志搜索,日志統計,分析等。

什么是ElasticSearch Stack(ELK)?

是以es為核心,logStash和beats負責數據抓取,kibana數據可視化的技術棧。

二、索引

傳統數據庫采用 正向索引,而es采用 倒排索引。

如mysql采用正向索引,比如一個表里有id,這個自增id就屬于主鍵索引,也屬于正向索引,查詢非常快。

但如果查詢某個字段,這個字段叫title其中存儲著“明朝那些事”,這時候如果想查包含“那些”的title怎么查詢呢,即使title有索引,這時候用模糊查詢也會索引失效。

?

ElasticSearch采用倒排索引,倒排索引有兩個概念,文檔和詞條。

  1. 文檔(document):每條數據就是一個文檔。
  2. 詞條(term):文檔按照語義分成的詞語。

詞條的唯一性保證不會重復,對詞條創建索引

查詢“華為手機”的過程

  1. 先拆分這個搜索為詞條“華為”“手機”。
  2. 在倒排索引通過詞條創建的主鍵索引,快速找到“手機”對應id為1,2,“華為”對應id為2,3。
  3. 文檔id1,2,3可以查詢到對應的三條數據,通過聚簇索引快速查詢到結果集。

為什么叫倒排索引呢,因為平時數據庫我們是先通過id去找具體的值,而es的倒排索引我們通過次創建新的索引,所以先是去找值再找對應索引的具體值。

三、ES與mysql對比

文檔:

ElasticSearch是面向文檔存儲,可以是數據庫一條商品或者一個訂單信息。會被序列化成JSON格式存儲。

索引(index):

會把類型相同的索引放在一起,比如商品索引,用戶索引,訂單索引等。

  1. Mysql的table 對比與 es的索引index

索引就是文檔的集合,類似與數據庫的表。

  1. mysql的row對比與es的document

Document是json風格,row是一條條數據。

Mysql擅長事務,數據庫一致性和安全。

Es擅長海量數據搜索和計算。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34825.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34825.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34825.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

accumulate函數的簡單應用

accumulate函數是C numeric庫中的一個函數&#xff0c;主要用來對指定范圍內元素求和&#xff0c;但也自行指定一些其他操作&#xff0c;如范圍內所有元素相乘、相除等。 使用前需要引用頭文件&#xff1a; #include <numeric>函數共有四個參數&#xff0c;其中前三個為…

Ajax 筆記(二)—— Ajax 案例

筆記目錄 2. Ajax 綜合案例2.1 案例一-圖書管理2.1.1 渲染列表2.1.2 新增圖書2.1.3 刪除圖書2.1.4 編輯圖書 2.2 案例二-背景圖的上傳和更換2.2.1 上傳2.2.2 更換 2.3 案例三-個人信息設置2.3.1 信息渲染2.3.2 頭像修改2.2.3 信息修改2.3.4 提示框 Ajax 筆記&#xff1a; Ajax…

React Native 列表組件基礎知識

ScrollView 組件 ScrollView組件是一個容器滾動組件&#xff0c;當容器超出指定寬高時就可以進行滾動交互。 ScrollView組件是一次性渲染所有的 React 子組件&#xff0c;這在性能上是比較差的&#xff0c;所以不建議當列表特別長的時候使用此組件。 接下來列舉幾個常用的一…

HTML(JavaEE初級系列12)

目錄 前言&#xff1a; 1.HTML結構 1.1認識HTML標簽 1.2HTML文件基本結構 1.3標簽層次結構 1.4快速生成代碼框架 2.HTML常見標簽 2.1注釋標簽 2.2標題標簽&#xff1a;h1-h6 2.3段落標簽&#xff1a;p 2.4換行標簽&#xff1a; br 2.5格式化標簽 2.6圖片標簽&#…

【數據結構?堆】經典問題:k路歸并

題目描述 k路歸并問題&#xff1a;   把k個有序表合并成一個有序表。&#xff08; k < 10^4 &#xff09; 輸入輸出格式 輸入格式&#xff1a; 輸入數據共有 2*k1 行。   第一行&#xff0c;一個整數k&#xff08; k < 10^4 &#xff09;&#xff0c;表示有k個有序…

【詳細教程】學會使用Python隧道代理

作為一名專業爬蟲程序猿&#xff0c;我深知在進行網絡數據采集時&#xff0c;可能會面臨網絡封鎖、隱私泄露等問題。今天&#xff0c;我將與大家分享如何學會使用Python隧道代理&#xff0c;幫助我們自由訪問受限網站&#xff0c;同時保護了解探索Python隧道代理&#xff01; …

3.1 Spring MVC概述

1. MVC概念 MVC是一種編程思想&#xff0c;它將應用分為模型&#xff08;Model&#xff09;、視圖&#xff08;View&#xff09;、控制器&#xff08;Controller&#xff09;三個層次&#xff0c;這三部分以最低的耦合進行協同工作&#xff0c;從而提高應用的可擴展性及可維護…

C++ opencv:視頻讀取、變換顏色風格、保存

1. 相關知識點 VideoCapture&#xff1b; applyColorMap&#xff1b; VideoWriter&#xff1b; 2. 代碼 編寫代碼main.cpp: #include<iostream> #include "opencv2/opencv.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgu…

解開謎團:為什么紅黑樹勝過AVL樹?

為什么紅黑樹勝過AVL樹 博主簡介一、引言1.1、紅黑樹和AVL樹簡介1.2、紅黑樹在某些方面優于AVL樹 二、紅黑樹和AVL樹的基本原理2.1、紅黑樹的定義和性質2.2、AVL樹的定義和性質2.3、對比兩種樹結構的特點 三、插入和刪除操作的復雜性比較3.1、紅黑樹的插入操作和平衡性維護3.2、…

冪次方(c++題解)

題目描述 任何一個正整數都可以用 22 的冪次方表示。例如 1372^72^32^0。 同時約定方次用括號來表示&#xff0c;即 a^b 可表示為 a(b)。 由此可知&#xff0c;137137 可表示為 2(7)2(3)2(0) 進一步&#xff1a; 7 2^222^0 ( 2^121 用 2 表示)&#xff0c;并且 322^0。 所…

Spring Boot 重啟命令

Spring Boot 重啟命令 本文描述了一個重啟Spring Boot命令執行過程和示例 本文利用kill -9 關閉進程&#xff0c;不優雅&#xff0c;會突然中斷程序&#xff0c;可能導致數據和邏輯異常 搜索微信小程序【亞特技術】在資源中搜索【優雅】可得到Spring Boot如何優化重啟 1. 過…

【Bert101】變壓器模型背后的復雜數學【02/4】

一、說明 眾所周知&#xff0c;變壓器架構是自然語言處理&#xff08;NLP&#xff09;領域的突破。它克服了 seq-to-seq 模型&#xff08;如 RNN 等&#xff09;無法捕獲文本中的長期依賴性的局限性。變壓器架構被證明是革命性架構&#xff08;如 BERT、GPT 和 T5 及其變體&…

【陣列信號處理】空間匹配濾波器、錐形/非錐形最佳波束成形器、樣本矩陣反演 (SMI) 研究(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

九耶丨閣瑞鈦倫特-產品經理面試題

在產品上線后&#xff0c;會著重觀察6類指標&#xff1a; 1、活躍用戶指標 衡量APP用戶規模的指標&#xff0c;一個產品是否成功&#xff0c;如果只看一個指標&#xff0c;那么這個指標一定是活躍用戶數。 日活(DAU)&#xff1a;一天內日均活躍設備數(去重&#xff0c;每個公…

關于使用pycharm遇到只能使用unittest方式運行,無法直接選擇Run

相信大家可能都遇到過這個問題&#xff0c;使用pycharm直接運行腳本的時候&#xff0c;只能選擇unittest的方式&#xff0c;能愁死個人 經過幾次各種嘗試無果之后&#xff0c;博主就放棄死磕了&#xff0c;原諒博主是個菜鳥 后來遇到這樣的問題&#xff0c;往往也就直接使用cm…

Python爬蟲-抓取的目標數據為#x開頭,怎么解決?

前言 本文是該專欄的第4篇,后面會持續分享python爬蟲案例干貨,記得關注。 在做爬蟲項目的時候,有時候抓取的平臺目標數據為&#x開頭,如下圖所示: 瀏覽器顯示的正常數據,但通過爬蟲協議獲取到的網頁源碼數據卻是以&#x開頭的隱藏數據,遇到這種情況,爬蟲需要怎么處…

【Linux從入門到精通】文件I/O操作(C語言vs系統調用)

文章目錄 一、C語言的文件IO相關函數操作 1、1 fopen與fclose 1、2 fwrite 1、3 fprintf與fscanf 1、4 fgets與fputs 二、系統調用相關接口 2、1 open與close 2、2 write和read 三、簡易模擬實現cat指令 四、總結 &#x1f64b;?♂? 作者&#xff1a;Ggggggtm &#x1f64b;?…

Golang bitset 基本使用

安裝&#xff1a; go get github.com/bits-and-blooms/bitset下面代碼把fmtx換成fmt就行 //------------基本操作------------//構建一個64bit長度的bitsetb : bitset.New(64)//放入一個數b.Set(10)fmtx.Println("add-10&#xff1a;", b.DumpAsBits()) // 0000000…

針對英特爾酷睿 CPU 優化,Canonical 發布 Ubuntu 實時內核

導讀Canonical 今天宣布針對支持時序協調運算&#xff08;TCC&#xff09;和時間敏感網絡&#xff08;IEEE TSN&#xff09;的英特爾酷睿處理器&#xff0c;推出優化版實時 Ubuntu 內核。 Canonical 于今年 2 月宣布&#xff0c;為購買 Ubuntu Pro 訂閱&#xff0c;使用代號為 …

OPENCV C++(七)霍夫線檢測+找出輪廓和外接矩形+改進旋轉

霍夫線檢測 vector<Vec2f> lines1;HoughLines(canny_mat, lines1, 1, CV_PI / 180.0,90 );//45可以檢測里面兩條線 80檢測出外邊兩條線 定義存放輸出線的向量 此向量輸出有<距離&#xff0c;角度> 因為檢測的原理就是在變換霍夫空間里面去檢測的&#xff0c;這里可…