Elasticsearch入门(一)基本介绍与安装
視頻學(xué)習(xí):018-入門-JavaAPI-環(huán)境準(zhǔn)備_嗶哩嗶哩_bilibili
介紹:
Elaticsearch:簡稱為 ES,ES 是一個開源的高擴展的分布式全文搜索引擎,是整個 Elastic Stack 技術(shù)棧的核心。它可以近乎實時的存儲、檢索數(shù)據(jù);本身擴展性很好,可以擴展到上百臺服務(wù)器,處理 PB 級別的數(shù)據(jù)。我們要是進行全文檢索項目的開發(fā),建議優(yōu)先考慮elasticsearch。
全文索引:它的工作原理是計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當(dāng)用戶查詢時,檢索程序就根據(jù)事先建立的索引進行查找,并將查找的結(jié)果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。
特點:
1、elasticsearch是一個基于Lucene的高擴展的分布式搜索服務(wù)器,支持開箱即用。
2、elasticsearch隱藏了Lucene的復(fù)雜性,對外提供Restful 接口來操作索引、搜索。?
安裝
下載地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
這里我為了方便演示使用的是 elasticsearch-7.17.7 windows版,需要javaJDK1.8及以上。解壓即安裝完畢,解壓后的 Elasticsearch 的目錄結(jié)構(gòu)如下?
| bin | 可執(zhí)行腳本目錄 |
| config | 配置目錄 |
| jdk | 內(nèi)置JDK目錄 |
| lib | 類庫 |
| logs | 日志目錄 |
| moudules | 模塊目錄 |
| plugins | 插件目錄 |
?啟動:進入 bin 文件目錄,點擊 elasticsearch.bat 文件啟動 ES 服務(wù)
注意:9300?端口為 Elasticsearch 集群間組件的通信端口,9200?端口為瀏覽器訪問的 http協(xié)議 RESTful 端口。
瀏覽器輸入地址:http://localhost:9200,測試:
?補充:
- 默認安裝包帶有 jdk 環(huán)境,如果系統(tǒng)配置 JAVA_HOME,那么使用系統(tǒng)默認的 JDK,如果沒有配置使用自帶的 JDK,一般建議使用系統(tǒng)配置的 JDK。
- 雙擊啟動窗口閃退,通過路徑訪問追蹤錯誤,如果是“空間不足”,請修改config/jvm.options 配置文件
?安裝Kibana
下載地址:https://www.elastic.co/cn/downloads/kibana
?下載后進行解壓,目錄如圖:
修改中文:根目錄下的 config 目錄,打開?kibana.yml?文件添加:
# 默認端口 server.port: 5601 # ES 服務(wù)器的地址 elasticsearch.hosts: ["http://localhost:9200"] # 索引名 kibana.index: ".kibana" # 支持中文 i18n.locale: "zh-CN"進入 bin 目錄,雙擊?kibana.bat?啟動服務(wù)
啟動 Kibana 之前要啟動 Elasticsearch
訪問:http://localhost:5601/
kibana 會自動去訪問 9200,也就是 elasticsearch 的端口號
名詞概念:
索引(Index)
一個索引就是一個擁有幾分相似特征的文檔的集合。比如說,你可以有一個客戶數(shù)據(jù)的索引,另一個產(chǎn)品目錄的索引,還有一個訂單數(shù)據(jù)的索引。一個索引由一個名字來標(biāo)識(必須全部是小寫字母),并且當(dāng)我們要對這個索引中的文檔進行檢索、搜索、更新和刪除的時候,都要使用到這個名字。在一個集群中,可以定義任意多的索引。
能搜索的數(shù)據(jù)必須有索引,這樣的好處是可以提高查詢速度,比如:新華字典前面的目錄就是索引的意思,目錄可以提高查詢速度。
Elasticsearch 索引的精髓:一切設(shè)計都是為了提高搜索的性能。
類型(Type)
在一個索引中,你可以定義一種或多種類型。
一個類型是你的索引的一個邏輯上的分類/分區(qū),其語義完全由你來定。通常,會為具有一組共同字段的文檔定義一個類型。不同的版本,類型發(fā)生了不同的變化
| 5.x | 支持多種 type |
| 6.x | 支持多種 type |
| 7.x | 默認不再支持自定義索引類型(默認類型為:_doc) |
文檔(Document)
一個文檔是一個可被檢索的基礎(chǔ)信息單元,也就是一條數(shù)據(jù)。
比如:你可以擁有某一個客戶的文檔,某一個產(chǎn)品的一個文檔,當(dāng)然,也可以擁有某個訂單的一個文檔。文檔以 JSON(Javascript Object Notation)格式來表示,而 JSON 是一個到處存在的互聯(lián)網(wǎng)數(shù)據(jù)交互格式。
在一個 index/type 里面,你可以存儲任意多的文檔。
字段(Field)
相當(dāng)于是數(shù)據(jù)表的字段,對文檔數(shù)據(jù)根據(jù)不同屬性進行的分類標(biāo)識。
映射(Mapping)
mapping 是處理數(shù)據(jù)的方式和規(guī)則方面做一些限制,如:某個字段的數(shù)據(jù)類型、默認值、分析器、是否被檢索等等。這些都是映射里面可以設(shè)置的,其它就是處理 ES 里面數(shù)據(jù)的一些使用規(guī)則設(shè)置也叫做映射,按著最優(yōu)規(guī)則處理數(shù)據(jù)對性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能對性能更好。
分片(Shards)
一個索引可以存儲超出單個節(jié)點硬件限制的大量數(shù)據(jù)。比如,一個具有 10 億文檔數(shù)據(jù)的索引占據(jù) 1TB 的磁盤空間,而任一節(jié)點都可能沒有這樣大的磁盤空間。或者單個節(jié)點處理搜索請求,響應(yīng)太慢。為了解決這個問題,Elasticsearch 提供了將索引劃分成多份的能力,每一份就稱之為分片。當(dāng)你創(chuàng)建一個索引的時候,你可以指定你想要的分片的數(shù)量。每個分片本身也是一個功能完善并且獨立的「索引」,這個「索引」可以被放置到集群中的任何節(jié)點上。
分片很重要,主要有兩方面的原因:
- 允許你水平分割/擴展你的內(nèi)容容量
- 允許你在分片之上進行分布式的、并行的操作,進而提高性能/吞吐量
至于一個分片怎樣分布,它的文檔怎樣聚合和搜索請求,是完全由 Elasticsearch 管理的,對于作為用戶的你來說,這些都是透明的,無需過分關(guān)心。
如同完整的大數(shù)據(jù),分割成多個小數(shù)據(jù),分布到不同的地方,小數(shù)據(jù)就是分片,所有的分片合起來就是完整的數(shù)據(jù)
被混淆的概念是:一個 Lucene 索引,我們在 Elasticsearch 稱作分片。一個 Elasticsearch 索引是分片的集合。當(dāng) Elasticsearch 在索引中搜索的時候,他發(fā)送查詢到每一個屬于索引的分片(Lucene 索引),然后合并每個分片的結(jié)果到一個全局的結(jié)果集
副本(Replicas)
在一個網(wǎng)絡(luò)/云的環(huán)境里,失敗隨時都可能發(fā)生,在某個分片/節(jié)點不知怎么的就處于離線狀態(tài),或者由于任何原因消失了,這種情況下,有一個故障轉(zhuǎn)移機制是非常有用并且是 強烈推薦的。為此目的,Elasticsearch 允許你創(chuàng)建分片的一份或多份拷貝,這些拷貝叫做復(fù)制分片(副本)。
復(fù)制分片之所以重要,有兩個主要原因:
- 在分片/節(jié)點失敗的情況下,提供了高可用性。因為這個原因,注意到復(fù)制分片從不與 原/主要(original/primary)分片置于同一節(jié)點上是非常重要的
- 擴展你的搜索量/吞吐量,因為搜索可以在所有的副本上并行運行
總之,每個索引可以被分成多個分片。一個索引也可以被復(fù)制 0 次(意思是沒有復(fù)制)或多次。一旦復(fù)制了,每個索引就有了主分片(作為復(fù)制源的原來的分片)和復(fù)制分片(主分片的拷貝)之別。分片和復(fù)制的數(shù)量可以在索引創(chuàng)建的時候指定。在索引創(chuàng)建之后,你可以在任何時候動態(tài)地改變復(fù)制的數(shù)量,但是你事后不能改變分片的數(shù)量。默認情況下,Elasticsearch 中的每個索引被分片 1 個主分片和 1 個復(fù)制,這意味著,如果你的集群中至少有兩個節(jié)點,你的索引將會有 1 個主分片和另外 1 個復(fù)制分片(1 個完全拷貝),這樣的話每個索引總共就有 2 個分片,我們需要根據(jù)索引需要確定分片個數(shù).
副本就是分片的備份(分身),和數(shù)據(jù)庫的主從復(fù)制類似
分配(Allocation)
將分片分配給某個節(jié)點的過程,包括分配主分片或者副本。如果是副本,還包含從主分片復(fù)制數(shù)據(jù)的過程。這個過程是由 master 節(jié)點完成的。
總結(jié)
以上是生活随笔為你收集整理的Elasticsearch入门(一)基本介绍与安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【pip报错】Could not fet
- 下一篇: 前端性能的优化