如何做網(wǎng)站拉動條黑帽seo是什么
索引Index
一個索引就是一個擁有幾分相似特征的文檔的集合。比如說,你可以有一個客戶數(shù)據(jù)的索引,另一個產(chǎn)品目錄的索引,還有一個訂單數(shù)據(jù)的索引。一個索引由一個名字來標(biāo)識(必須全部是小寫字母),并且當(dāng)我們要對這個索引中的文檔進(jìn)行索引、搜索、更新和刪除(CRUD)的時候,都要使用到這個名字。在一個集群中,可以定義任意多的索引。
能搜索的數(shù)據(jù)必須索引,這樣的好處是可以提高查詢速度,比如:新華字典前面的目錄就是索引的意思,目錄可以提高查詢速度。
Elasticsearch 索引的精髓:一切設(shè)計(jì)都是為了提高搜索的性能。
類型Type
在一個索引中,你可以定義一種或多種類型。
一個類型是你的索引的一個邏輯上的分類/分區(qū),其語義完全由你來定。通常,會為具
有一組共同字段的文檔定義一個類型。不同的版本,類型發(fā)生了不同的變化。
版本 | Type |
---|---|
5.x | 支持多種 type |
6.x | 只能有一種 type |
7.x | 默認(rèn)不再支持自定義索引類型(默認(rèn)類型為: _doc) |
在高版本中類型已經(jīng)去去除了,不再被使用
文檔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ù)不同屬性進(jìn)行的分類標(biāo)識。
映射Mapping
mapping 是處理數(shù)據(jù)的方式和規(guī)則方面做一些限制,如:某個字段的數(shù)據(jù)類型、默認(rèn)值、分析器、是否被索引等等。這些都是映射里面可以設(shè)置的,其它就是處理 ES 里面數(shù)據(jù)的一些使用規(guī)則設(shè)置也叫做映射,按著最優(yōu)規(guī)則處理數(shù)據(jù)對性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能對性能更好。
分片Shards
一個索引可以存儲超出單個節(jié)點(diǎn)硬件限制的大量數(shù)據(jù)。比如,一個具有 10 億文檔數(shù)據(jù)
的索引占據(jù) 1TB 的磁盤空間,而任一節(jié)點(diǎn)都可能沒有這樣大的磁盤空間。 或者單個節(jié)點(diǎn)處理搜索請求,響應(yīng)太慢。為了解決這個問題,**Elasticsearch 提供了將索引劃分成多份的能力,每一份就稱之為分片。**當(dāng)你創(chuàng)建一個索引的時候,你可以指定你想要的分片的數(shù)量。每個分片本身也是一個功能完善并且獨(dú)立的“索引”,這個“索引”可以被放置到集群中的任何節(jié)點(diǎn)上。
分片很重要,主要有兩方面的原因:
允許你水平分割 / 擴(kuò)展你的內(nèi)容容量。
允許你在分片之上進(jìn)行分布式的、并行的操作,進(jìn)而提高性能/吞吐量。
至于一個分片怎樣分布,它的文檔怎樣聚合和搜索請求,是完全由 Elasticsearch 管理的,對于作為用戶的你來說,這些都是透明的,無需過分關(guān)心。
被混淆的概念是,一個 Lucene 索引 我們在 Elasticsearch 稱作 分片 。 一個Elasticsearch 索引 是分片的集合。 當(dāng) Elasticsearch 在索引中搜索的時候, 他發(fā)送查詢到每一個屬于索引的分片(Lucene 索引),然后合并每個分片的結(jié)果到一個全局的結(jié)果集。
Lucene 是 Apache 軟件基金會 Jakarta 項(xiàng)目組的一個子項(xiàng)目,提供了一個簡單卻強(qiáng)大的應(yīng)用程式接口,能夠做全文索引和搜尋。在 Java 開發(fā)環(huán)境里 Lucene 是一個成熟的免費(fèi)開源工具。就其本身而言, Lucene 是當(dāng)前以及最近幾年最受歡迎的免費(fèi) Java 信息檢索程序庫。但 Lucene 只是一個提供全文搜索功能類庫的核心工具包,而真正使用它還需要一個完善的服務(wù)框架搭建起來進(jìn)行應(yīng)用。
目前市面上流行的搜索引擎軟件,主流的就兩款: Elasticsearch 和 Solr,這兩款都是基于 Lucene 搭建的,可以獨(dú)立部署啟動的搜索引擎服務(wù)軟件。由于內(nèi)核相同,所以兩者除了服務(wù)器安裝、部署、管理、集群以外,對于數(shù)據(jù)的操作 修改、添加、保存、查詢等等都十分類似。
副本Replicas
在一個網(wǎng)絡(luò) / 云的環(huán)境里,失敗隨時都可能發(fā)生,在某個分片/節(jié)點(diǎn)不知怎么的就處于
離線狀態(tài),或者由于任何原因消失了,這種情況下,有一個故障轉(zhuǎn)移機(jī)制是非常有用并且是強(qiáng)烈推薦的。為此目的, Elasticsearch 允許你創(chuàng)建分片的一份或多份拷貝,這些拷貝叫做復(fù)制分片(副本)。
復(fù)制分片之所以重要,有兩個主要原因:
在分片/節(jié)點(diǎn)失敗的情況下,提供了高可用性。因?yàn)檫@個原因,注意到復(fù)制分片從不與原/主要(original/primary)分片置于同一節(jié)點(diǎn)上是非常重要的。
擴(kuò)展你的搜索量/吞吐量,因?yàn)樗阉骺梢栽谒械母北旧喜⑿羞\(yùn)行。
總之,每個索引可以被分成多個分片。一個索引也可以被復(fù)制 0 次(意思是沒有復(fù)制)或多次。一旦復(fù)制了,每個索引就有了主分片(作為復(fù)制源的原來的分片)和復(fù)制分片(主分片的拷貝)之別。
分片和復(fù)制的數(shù)量可以在索引創(chuàng)建的時候指定。在索引創(chuàng)建之后,你可以在任何時候動態(tài)地改變復(fù)制的數(shù)量,但是你事后不能改變分片的數(shù)量。
默認(rèn)情況下,Elasticsearch 中的每個索引被分片 1 個主分片和 1 個復(fù)制,這意味著,如果你的集群中至少有兩個節(jié)點(diǎn),你的索引將會有 1 個主分片和另外 1 個復(fù)制分片(1 個完全拷貝),這樣的話每個索引總共就有 2 個分片, 我們需要根據(jù)索引需要確定分片個數(shù)。
分配Allocation
將分片分配給某個節(jié)點(diǎn)的過程,包括分配主分片或者副本。如果是副本,還包含從主分片復(fù)制數(shù)據(jù)的過程。這個過程是由 master 節(jié)點(diǎn)完成的。
進(jìn)階-系統(tǒng)架構(gòu)-簡介
一個運(yùn)行中的 Elasticsearch 實(shí)例稱為一個節(jié)點(diǎn),而集群是由一個或者多個擁有相同
cluster.name 配置的節(jié)點(diǎn)組成, 它們共同承擔(dān)數(shù)據(jù)和負(fù)載的壓力。當(dāng)有節(jié)點(diǎn)加入集群中或者從集群中移除節(jié)點(diǎn)時,集群將會重新平均分布所有的數(shù)據(jù)。
當(dāng)一個節(jié)點(diǎn)被選舉成為主節(jié)點(diǎn)時, 它將負(fù)責(zé)管理集群范圍內(nèi)的所有變更,例如增加、
刪除索引,或者增加、刪除節(jié)點(diǎn)等。 而主節(jié)點(diǎn)并不需要涉及到文檔級別的變更和搜索等操作,所以當(dāng)集群只擁有一個主節(jié)點(diǎn)的情況下,即使流量的增加它也不會成為瓶頸。 任何節(jié)點(diǎn)都可以成為主節(jié)點(diǎn)。我們的示例集群就只有一個節(jié)點(diǎn),所以它同時也成為了主節(jié)點(diǎn)。
作為用戶,我們可以將請求發(fā)送到集群中的任何節(jié)點(diǎn) ,包括主節(jié)點(diǎn)。 每個節(jié)點(diǎn)都知道
任意文檔所處的位置,并且能夠?qū)⑽覀兊恼埱笾苯愚D(zhuǎn)發(fā)到存儲我們所需文檔的節(jié)點(diǎn)。 無論我們將請求發(fā)送到哪個節(jié)點(diǎn),它都能負(fù)責(zé)從各個包含我們所需文檔的節(jié)點(diǎn)收集回數(shù)據(jù),并將最終結(jié)果返回給客戶端。 Elasticsearch 對這一切的管理都是透明的