日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Elasticsearch數(shù)據(jù)庫 | Elasticsearch-7.5.0應(yīng)用基礎(chǔ)實戰(zhàn)

 新進小設(shè)計 2021-07-11

Elasticsearch 是一個可用于分布式以及符合RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎?!?Elastic Stack 官網(wǎng)

0FNnW8.png

關(guān)于Elasticsearch的“愛恨情仇"

  • 或許提起搜索服務(wù)器,大部分人都會想起Solr 和 Elasticsearch 甚至以及國產(chǎn)大廠自研等。隨著人工智能和大數(shù)據(jù)時代的到來,甚至還帶動了一系列的機器引擎的出現(xiàn),譬如Splunk等。其中Solr 和 Elasticsearch是基于Lucene的搜索服務(wù)器。一般Solr是面向的是全文檢索引擎,而Elasticsearch是用于全文搜索、結(jié)構(gòu)化搜索、分析。而對于Splunk機器數(shù)據(jù)的引擎,可收集、索引和利用所有應(yīng)用程序、服務(wù)器和設(shè)備生成的快速移動型計算機數(shù)據(jù)。可是不論技術(shù)如何發(fā)展和更替,作為一位程序員,我們要做的不就是即時地維護技術(shù)儲備知識庫和實時更新自己的技術(shù)緩存,以及實現(xiàn)可擴展性的技術(shù)深度樹的增長。
  • 關(guān)于Elasticsearch,記得當(dāng)時接觸到Elasticsearch的名詞的時候,那是2017年的夏天。當(dāng)時的工作任務(wù)是實現(xiàn)一個關(guān)于知識庫的系統(tǒng)。當(dāng)時小伙伴們技術(shù)選型主要還是偏向Solr+Lucene來的做,有的甚至說直接使用Mysql數(shù)據(jù)庫的自帶函數(shù)來做。我是在無意中,在網(wǎng)上查詢搜索引擎的技術(shù)實戰(zhàn)的時候,看見了一篇對于Elasticsearch應(yīng)用實戰(zhàn)的應(yīng)用報告分析,才去查詢了Elasticsearch的相關(guān)資料。不過,當(dāng)時網(wǎng)上大部分對于搜索功能的Demo,大部分還是關(guān)于Solr 的比較多。也許在那個時候,大部分的技術(shù)概念基本都是偏向于技術(shù)長期穩(wěn)定和文檔資料全,使用程度相對較重的因素。但是,我個人卻留了一個心眼,自己嘗試去實戰(zhàn)Elasticsearch。
  • 第一次,動手實操還是在Windows本機上安裝(22G內(nèi)存)的。其中,安裝過程相比利用Tomcat+Solr來說,相對較復(fù)雜,而且對于本機的內(nèi)存和功耗占用較重。個開發(fā)基本只能說是能運行起來,可穩(wěn)定性方面,就有點顯得望而卻步的感覺。第二次,動手實戰(zhàn)是在本機搭建了一個虛擬機去實戰(zhàn)(2核8G),可在網(wǎng)絡(luò)通信方面,當(dāng)時選的是網(wǎng)絡(luò)橋接方式,也讓我對此覺得很是麻煩。第三次,是自己擁有了自己的阿里云服務(wù)器,在上面按照傳統(tǒng)部署方式(相對于Docker部署來說),可無奈個人服務(wù)器內(nèi)存較低(2核4G),修改配置JVM等無法啟動成功,總是拋出GC日志什么的問題,主要還是當(dāng)時囊中羞澀的問題,甚至一旦運行Elasticsearch服務(wù),其它的應(yīng)用便無法啟動和 運行。后來,接觸了Docker,于是,有了第四次的Elasticsearch實戰(zhàn)(單節(jié)點部署)。第四次,升級了阿里云服務(wù)器的配置(2核8G),最終實現(xiàn)了額自己的第一個Elasticsearch服務(wù)。甚至,為在后來工作中,動手實戰(zhàn)Elasticsearch分布式集群服務(wù)奠定基礎(chǔ)。

基本概述

  • 似乎從某種意義來說Elasticsearch和MongoDB/Redis/Memcache一樣,是一種Nosql數(shù)據(jù)庫。是一個接近實時的搜索平臺,從索引這個文檔到這個文檔能夠被搜索到只有一個輕微的延遲,企業(yè)應(yīng)用定位:采用Restful API標準的可擴展和高可用的實時數(shù)據(jù)分析的全文搜索工具。不過在當(dāng)時,Elastic Stack只有Elasticsearch、Kibana 和 Logstash用例,還沒有包含Beats等。而且在應(yīng)用方面,除了來當(dāng)作ELK分布式日志系統(tǒng)搭建外,更多的是Elasticsearch +Elasticsearch-Head插件在滿足業(yè)務(wù)場景方面的需求,能夠安全可靠地獲取任何來源、任何格式的數(shù)據(jù),然后實時地對數(shù)據(jù)進行搜索、分析和可視化等。
  • 基本特點:
  1. 可拓展:支持一主多從且擴容簡易,只要cluster.name一致且在同一個網(wǎng)絡(luò)中就能自動加入當(dāng)前集群;本身就是開源軟件,也支持很多開源的第三方插件
  2. 高可用:在一個集群的多個節(jié)點中進行分布式存儲,索引支持shards和復(fù)制,即使部分節(jié)點down掉,也能自動進行數(shù)據(jù)恢復(fù)和主從切換
  3. 采用RestfulAPI標準:通過http接口使用JSON格式進行操作數(shù)據(jù)
  4. 數(shù)據(jù)存儲的最小單位是文檔,本質(zhì)上是一個JSON 文本

Elasticsearch關(guān)鍵詞

  • Node : 節(jié)點,單個裝有Elasticsearch服務(wù)并且提供故障轉(zhuǎn)移和實現(xiàn)可擴展的服務(wù)器
  • Cluster : 集群,一個Elasticsearch-Cluster集群是有一個Node或者至少2個Node組成的服務(wù)器,共同服務(wù)和分享Node節(jié)點數(shù)據(jù)的具有負載均衡的功能,甚至基于Zookeeper集群的高可用服務(wù)等。
  • Index : 索引,具有相同或者相似特征的Document文檔對象的集合
  • Type : 類型,相同F(xiàn)iled字段的文檔定義一個Type類型,一個Type可以創(chuàng)建多個Index索引
  • Document :文檔,一個Document文檔可以被用作Index索引的基礎(chǔ)信息單元
  • Field : 字段列,F(xiàn)ield是Elasticsearch的最小單元,相擋當(dāng)于數(shù)據(jù)的某一列
  • Term:由很多的字節(jié)組成。一般將Text類型的Field Value分詞之后的每個最小單元叫做Term。
  • Shards :分片,Elasticsearch把Index索引分成若干份,每一個部分就是一個Shard分片
  • Replicas : 復(fù)制,每個Inex索引里每個Shard分片的拷貝或者說是數(shù)據(jù)備份

Elasticsearch 結(jié)構(gòu)與其它數(shù)據(jù)庫對比

  • 數(shù)據(jù)模型上的對比
databaseType databaseName databaseUnit databaseTable databaseRow databaseColumn
sql Mysql 數(shù)據(jù)庫-database 表-table 數(shù)據(jù)行-row 數(shù)據(jù)列-column
Nosql Elasticsearch 索引-index 類型-type 文檔-document 字段列-field
Nosql Hbase 命名空間-namespace 域/切片-region 數(shù)據(jù)行-row 數(shù)據(jù)列-column
  • 使用場景上的對比
databaseType databaseName databaseStorage databaseTransaction databaseConsistency databaseScalability secondaryIndex fullText
sql Mysql 行數(shù)數(shù)據(jù)存儲,適用OLTP業(yè)務(wù) Innodb引擎支持 strong consistency-強一致性 單機可拓展粒度不高 支持 支持
Nosql Elasticsearch 索引存儲-任何檢索業(yè)務(wù) 不支持 支持可配置 水平拓展 支持 支持
Nosql Hbase 列式數(shù)據(jù)存儲,介于OLTP和OLAP模型之間 不支持 strong consistency-強一致性 和 time consistency-時序一致性 水平拓展 不支持 不支持

ps[??注意事項]:

  1. OLTP: OnLine Transaction Processing聯(lián)機事務(wù)處理過程(OLTP),主要對應(yīng)傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,基本操作增刪改查,強調(diào)事務(wù)一致性,比如銀行系統(tǒng)、電商系統(tǒng)。
  2. OLAP:Online Analytical processing 即聯(lián)機分析處理過程(OLAP),主要對應(yīng)倉儲型數(shù)據(jù)庫,基本讀取數(shù)據(jù),做復(fù)雜數(shù)據(jù)分析,側(cè)重技術(shù)決策支持,提供直觀簡單的結(jié)果。

Elasticsearch原理剖析

0kfaDA.png

  • Gateway[索引數(shù)據(jù)的存儲格式]: Elasticsearch用來存儲數(shù)據(jù)index索引的文件系統(tǒng),支持多種類型[ Local FileSystem-本地文件系統(tǒng) Shared FileSystem-分布式文件系統(tǒng) Hadoop HDFS, Amazon S3 ]
  • Distributed Lucene Directory[底層 API框架]:Elasticsearch底層依賴Lucene框架,每一個Elasticsearch節(jié)點服務(wù)都會有對應(yīng)的Lucene框架
  • Major Module[加工處理方式] : 在Lucene上層,Index Module(創(chuàng)建Index模塊)、Search Module(搜索模塊)、Mapping(映射)、River(運行在Elasticsearch集群內(nèi)部的一個插件,主要用來從外部獲取獲取異構(gòu)數(shù)據(jù),然后在Elasticsearch里創(chuàng)建索引
  • Discovery[Elasticsearch發(fā)現(xiàn)機制]:Discovery 是Elasticsearch自動發(fā)現(xiàn)節(jié)點的機制;Zen是用來實現(xiàn)節(jié)點自動發(fā)現(xiàn)、Master節(jié)點選舉用;Elasticsearch是基于P2P的系統(tǒng),它首先通過廣播的機制尋找存在的節(jié)點,然后再通過多播協(xié)議來進行節(jié)點間的通信,同時也支持點對點的交互
  • Scripting[Elasticsearch腳本執(zhí)行功能]:Scripting 是腳本執(zhí)行功能,有這個功能能很方便對查詢出來的數(shù)據(jù)進行加工處理
  • Plugins[Elasticsearch插件機制]:Elasticsearch整合第三方的插件的主要實現(xiàn)拓展和整合等,譬如elasticsearch-ik分詞插件、elasticsearch-sql sql插件。
  • Transport[Elasticsearch傳輸機制]: 傳輸模塊支持 Thrift, Memcached , HTTP,默認使用 HTTP 傳輸
  • JMX[Elasticsearch基于Java的管理框架]:Java 的管理框架,用來管理 Elasticsearch 應(yīng)用
  • RSTful Style API [Elasticsearch的API支持模式]:基于Netty實現(xiàn)的網(wǎng)絡(luò)通信,通過RSTful API 和 Elasticsearch 集群進行交互

數(shù)據(jù)結(jié)構(gòu)

0kfG9O.png

版權(quán)聲明:本文為博主原創(chuàng)文章,遵循相關(guān)版權(quán)協(xié)議,如若轉(zhuǎn)載或者分享請附上原文出處鏈接和鏈接來源。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多