這段時(shí)間項(xiàng)目上在研究ElasticSearch,所以記錄一下學(xué)習(xí)心得坪稽,如有不對(duì)或者有需要補(bǔ)充的地方,麻煩各位小伙伴積極指出!
ES核心術(shù)語(yǔ)
index索引? ? ? ? ?數(shù)據(jù)庫(kù)的表
document? ? ? ? ?數(shù)據(jù)庫(kù)的表中對(duì)應(yīng)的數(shù)據(jù)行
field? ? ? ? ? ? ? ? ? 數(shù)據(jù)庫(kù)中字段列
ES的優(yōu)勢(shì)
mapping映射? ? ? ? ? ? ? 對(duì)應(yīng)的表結(jié)構(gòu)定義
近實(shí)時(shí)NRT? ? ? ? ? ? ? ? ? Near Real Time? ?好比在github上建了一個(gè)倉(cāng)庫(kù)徐勃,基本耗時(shí)1S,最快可以1S內(nèi)可以被搜索到
節(jié)點(diǎn)node? ? ? ? ? ? ? ? ? ? 可以使用分布式集群(相當(dāng)于一臺(tái)服務(wù)器就是一個(gè)節(jié)點(diǎn)早像,獨(dú)立也可以使用)
shard replica? ? ? ? ? ? ? ?數(shù)據(jù)分片與備份(分片【shard】:把索引庫(kù)拆分為多份僻肖,分布在不同的節(jié)點(diǎn)上,比如有2個(gè)節(jié)點(diǎn)卢鹦,這2個(gè)節(jié)點(diǎn)的所有數(shù)據(jù)可以組成一個(gè)完整的索引庫(kù)臀脏,分別存在這2個(gè)節(jié)點(diǎn),目的是水平擴(kuò)展冀自,可以有效的提高吞吐量揉稚。備份【replica】每個(gè)節(jié)點(diǎn)的備份)在每個(gè)分片上會(huì)有一個(gè)ES的進(jìn)程,會(huì)有一定的計(jì)算能力熬粗,在分片存在的同時(shí)搀玖,ES會(huì)對(duì)相應(yīng)的分片進(jìn)行備份,假如此時(shí)還是2個(gè)節(jié)點(diǎn)荐糜,當(dāng)其中一個(gè)節(jié)點(diǎn)掛了以后巷怜,會(huì)立即把此節(jié)點(diǎn)備份的數(shù)據(jù)掛載到另外一個(gè)節(jié)點(diǎn)上。分片【shard】也可以被稱為primary shard(主分片)暴氏,備份【replica】也可以被稱為replica?shard (備份)延塑,如果后期數(shù)據(jù)達(dá)到6T的數(shù)據(jù)量的話,需要配置6個(gè)shard分片
ES處理數(shù)據(jù)的一個(gè)方式? ? ? ?倒排索引
比如我下面的例子:? 以下數(shù)據(jù)其實(shí)就是對(duì)應(yīng)數(shù)據(jù)中的一張表的3行數(shù)據(jù)答渔,右圖是ES中的排序方式
文檔ids表示單詞在表中存在的數(shù)據(jù)行(表示數(shù)據(jù)在左邊的第幾行)簡(jiǎn)單來(lái)說(shuō)就是根據(jù)key查找value這個(gè)屬于正排索引
id? ? ? ? ? ? ? ? ? ? ? name? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 單詞? ? ? ? ? ? 文檔ids? ? ? ? ? ? ?詞頻TF;位置POS
1? ? ? ? ? ? ? ? ? ? 肯德基真好吃? ? ? ? ? ? ? ? ? ? ? ? ?肯德基? ? ? ? ? 1关带,2,3? ? ? ? ? ?1:1:<1>,2:1:<1>,3:1:<1>
2? ? ? ? ? ? ? ? ? ? 肯德基是快餐? ? ? ? ? ? ? ? ? ? ? ? ? 真? ? ? ? ? ? ? ? ? ? ?1? ? ? ? ? ? ? ? ?1:1:<3>
3? ? ? ? ? ? ? ? ? ? 肯德基好吃的不行? ? ? ? ? ? ? ? ? ?好吃? ? ? ? ? ? ? ? ? 3? ? ? ? ? ? ? ? ?3:1:<3>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是? ? ? ? ? ? ? ? ? ? ? 2? ? ? ? ? ? ? ? ?2:1:<3>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?的? ? ? ? ? ? ? ? ? ? ? 3? ? ? ? ? ? ? ? ?3:1:<5>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?快餐? ? ? ? ? ? ? ? ? ?2? ? ? ? ? ? ? ? ?2:1:<4>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不行? ? ? ? ? ? ? ? ? ?3? ? ? ? ? ? ? ? ?3:1:<6>
以下是根據(jù)右上圖的文檔ids,我們可以得出以下數(shù)據(jù):倒排索引是根據(jù)value來(lái)查找對(duì)應(yīng)的key宋雏,
我們以1:1:<1>為例芜飘,第一個(gè)1是表示單詞所在的行Id,第二個(gè)1表示在單詞所在行Id出現(xiàn)的次數(shù),<1>表示單詞所在行Id的位置,索引是從0開(kāi)始的磨总。出現(xiàn)的頻率越高嗦明,越容易被用戶搜索的到。