lucene和elasticsearch的前世今生、elasticsearch的核心概念、elasticsearch核心概念 vs. 数据库核心概念(来自学习资料)
1、Lucene和elasticsearch的前世今生
? ? ? ?lucene,最先進(jìn)、功能最強(qiáng)大的搜索庫(kù),直接基于lucene開發(fā),非常復(fù)雜,api復(fù)雜(實(shí)現(xiàn)一些簡(jiǎn)單的功能,寫大量的java代碼),需要深入理解原理(各種索引結(jié)構(gòu))
? ? ? (1)分布式的文檔存儲(chǔ)引擎。
? ? ? (2)分布式的搜索引擎如分析引擎。
? ? ? (3)分布式,支持PB級(jí)數(shù)據(jù)。
? ? ? ? 開箱即用,優(yōu)秀的默認(rèn)參數(shù),不需要 任何額外設(shè)置,完全開源。
? ? ? ? 關(guān)于elasticsearch的一個(gè)傳說,有一個(gè)程序員失業(yè)了,陪著自己老婆去英國(guó)倫敦學(xué)習(xí)廚師課程。程序員在失業(yè)期間想給老婆寫一個(gè)菜譜搜索引擎,覺得lucene實(shí)在太復(fù)雜了,就開發(fā)了一個(gè)封裝了lucene的開源項(xiàng)目,compass。后來程序員找到了工作,是做分布式的高性能項(xiàng)目的,覺得compass不夠,就寫了elasticsearch,讓lucene變成分布式的系統(tǒng)。
2、Elasticsearch的核心概念
? ? ? (1)Near Realtime (NRT):近實(shí)時(shí),兩個(gè)意思,從寫入數(shù)據(jù)到數(shù)據(jù)可以被搜索到一個(gè)小延遲(大概1秒);基于ES執(zhí)行搜索和分析可以達(dá)到秒級(jí)。
? ? ? (2)Cluster:集群,包含多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)屬于哪個(gè)集群是通過一個(gè)配置(集群名稱,默認(rèn)是elasticsearch)來決定的,對(duì)于中小型應(yīng)用來說,剛開始一個(gè)集群就一個(gè)節(jié)點(diǎn)很正常。? ? ? (3)Node:節(jié)點(diǎn),集群中的一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)也有一個(gè)名稱(默認(rèn)是隨機(jī)分配的),節(jié)點(diǎn)名稱很重要(在執(zhí)行運(yùn)維管理操作的時(shí)候),默認(rèn)節(jié)點(diǎn)會(huì)去加入一個(gè)名稱為“elasticsearch”的集群,如果直接啟動(dòng)一堆節(jié)點(diǎn),那么它們會(huì)自動(dòng)組成一個(gè)elasticsearch集群,當(dāng)然一個(gè)節(jié)點(diǎn)也可以組成一個(gè)elasticsearch集群。
? ? ? (4)Dodument & field:文檔,ES中的最小數(shù)據(jù)單元,一個(gè)Document可以是一條客戶數(shù)據(jù),一條商品分類數(shù)據(jù),一條訂單數(shù)據(jù),通常用JSON數(shù)據(jù)結(jié)構(gòu)表示,每個(gè)index下的type中,都可以去存儲(chǔ)多個(gè)document。一個(gè)document里面有多個(gè)field,每個(gè)field就是一個(gè)數(shù)據(jù)字段。如下所示:
? ? ? ?product document
? ? ? ?{
? ? ? ? ? ?"product_id": "1",
? ? ? ? ? ?"product_name": "高露潔牙膏",
? ? ? ? ? ?"product_desc": "高效美白",
? ? ? ? ? ?"category_id": "2",
? ? ? ? ? ?"category_name": "日化用品"
? ? ? ? }
? ? ? (5)Index:索引,包含一堆有相似結(jié)構(gòu)的文檔數(shù)據(jù),比如可以有一個(gè)客戶索引,商品分類索引,訂單索引,索引有一個(gè)名稱。一個(gè)index包含很多document,一個(gè)index就代表了一類類似的或者相同的document。比如說建立一個(gè)product index,商品索引,里面可能就存放了所有的商品數(shù)據(jù),所有的商品document。
? ? ? (6)Type:類型,每個(gè)索引里都可以有一個(gè)或多個(gè)type,type是index中的一個(gè)邏輯數(shù)據(jù)分類,一個(gè)type下的document,都有相同的field,比如博客系統(tǒng),有一個(gè)索引,可以定義用戶數(shù)據(jù)type,博客數(shù)據(jù)type,評(píng)論數(shù)據(jù)type。
? ? ? ? 商品index,里面存放了所有的商品數(shù)據(jù),商品document
? ? ? ? 但是商品分很多種類,每個(gè)種類的document的field可能不太一樣,比如說電器商品,可能還包含一些諸如售后時(shí)間范圍這樣的特殊field;生鮮商品,還包含一些諸如生鮮保質(zhì)期之類的特殊field
? ? ? ? type,日化商品type,電器商品type,生鮮商品type
? ? ? ? 日化商品type:product_id,product_name,product_desc,category_id,category_name
? ? ? ? 電器商品type:product_id,product_name,product_desc,category_id,category_name,service_period? ? ? ? 生鮮商品type:product_id,product_name,product_desc,category_id,category_name,eat_period
每一個(gè)type里面,都會(huì)包含一堆document
{
? "product_id": "2",
? "product_name": "長(zhǎng)虹電視機(jī)",
? "product_desc": "4k高清",
? "category_id": "3",
? "category_name": "電器",
? "service_period": "1年"
}
{
? "product_id": "3",
? "product_name": "基圍蝦",
? "product_desc": "純天然,冰島產(chǎn)",
? "category_id": "4",
? "category_name": "生鮮",
? "eat_period": "7天"
}
(7)shard:單臺(tái)機(jī)器無法存儲(chǔ)大量數(shù)據(jù),es可以將一個(gè)索引中的數(shù)據(jù)切分為多個(gè)shard,分布在多臺(tái)服務(wù)器上存儲(chǔ)。有了shard就可以橫向擴(kuò)展,存儲(chǔ)更多數(shù)據(jù),讓搜索和分析等操作分布到多臺(tái)服務(wù)器上去執(zhí)行,提升吞吐量和性能。每個(gè)shard都是一個(gè)lucene index。
(8)replica:任何一個(gè)服務(wù)器隨時(shí)可能故障或宕機(jī),此時(shí)shard可能就會(huì)丟失,因此可以為每個(gè)shard創(chuàng)建多個(gè)replica副本。replica可以在shard故障時(shí)提供備用服務(wù),保證數(shù)據(jù)不丟失,多個(gè)replica還可以提升搜索操作的吞吐量和性能。primary shard(建立索引時(shí)一次設(shè)置,不能修改,默認(rèn)5個(gè)),replica shard(隨時(shí)修改數(shù)量,默認(rèn)1個(gè)),默認(rèn)每個(gè)索引10個(gè)shard,5個(gè)primary shard,5個(gè)replica shard,最小的高可用配置,是2臺(tái)服務(wù)器。
3、Elasticsearch核心概念 ? ?vs. ? ? 數(shù)據(jù)庫(kù)核心概念
Elasticsearch ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?數(shù)據(jù)庫(kù)
---------------------------------------------------------------------------
Document ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?行
Type ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表
Index ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 庫(kù)
? ? ? ?
? ? ? ??
總結(jié)
以上是生活随笔為你收集整理的lucene和elasticsearch的前世今生、elasticsearch的核心概念、elasticsearch核心概念 vs. 数据库核心概念(来自学习资料)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019crv混动后视镜如何折叠收回?
- 下一篇: 怎么分辨事故车和水淹车