Elasticsearch

一 .簡介

(1) 一切設(shè)計(jì)都是為了提高搜索的性能

(2)?是一個基于Lucene構(gòu)建的開源熟妓、分布式、RESTful的全文本搜索引擎

(3)?分布式實(shí)時(shí)文件存儲搔涝,并將每一個字段都編入索引,使其可以被搜索

(4)?可以擴(kuò)展到上百臺服務(wù)器,達(dá)到擴(kuò)容效果跃惫,添加更多節(jié)點(diǎn);處理PB級別的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)

(5) 面向文檔型數(shù)據(jù)庫,一條數(shù)據(jù)在這里就是一個文檔艾栋,用JSON作為文檔序列化的格式

類別數(shù)據(jù)庫

二 .概念

1.索引(index)

一個?索引?類似于傳統(tǒng)關(guān)系數(shù)據(jù)庫中的一個?數(shù)據(jù)庫?爆存,是一個存儲關(guān)系型文檔的地方,并通過引用此名稱完成文檔的創(chuàng)建、搜索蝗砾、更新及刪除操作

2.類型(type)

類型是索引內(nèi)部的邏輯分區(qū)(category/partition)先较,然而其意義完全取決于用戶需求;一般來說,類型就是為那些擁有相同的域的文檔做的預(yù)定義

3.文檔(document)

文檔是Lucene索引和搜索的原子單位遥诉,它是包含了一個或多個域的容器拇泣,基于JSON格式進(jìn)行表示;文檔由一個或多個域組成,每個域擁有一個名字及一個或多個值矮锈,有多個值的域通常稱為“多值域”,文檔中霉翔,域的數(shù)據(jù)存儲時(shí)支持“string”、“numbers”苞笨、“Booleans”和“dates”幾種類型债朵,不同類型的數(shù)據(jù)在索引時(shí)是略有區(qū)別的。在 Elasticsearch 中文檔是?不可改變?的瀑凝,不能修改它們序芦。

4.映射(mapping)

所有的文檔在存儲之前都要首先進(jìn)行分析。用戶可根據(jù)需要定義如何將文本分割成token粤咪、哪些token應(yīng)該被過濾掉谚中,以及哪些文本需要進(jìn)行額外處理等等;ES還提供了額外功能,例如將域中的內(nèi)容按需排序

5.集群(cluster)

ES集群是一個或多個節(jié)點(diǎn)的集合,它們共同存儲了整個數(shù)據(jù)集宪塔,并提供了聯(lián)合索引以及可跨所有節(jié)點(diǎn)的搜索能力磁奖,多節(jié)點(diǎn)組成的集群擁有冗余能力,它可以在一個或幾個節(jié)點(diǎn)出現(xiàn)故障時(shí)保證服務(wù)的整體可用性集群靠其獨(dú)有的名稱進(jìn)行標(biāo)識某筐,默認(rèn)名稱為“elasticsearch”比搭。節(jié)點(diǎn)靠其集群名稱來決定加入哪個ES集群,一個節(jié)點(diǎn)只能屬一個集群

6.節(jié)點(diǎn)(node)

運(yùn)行了單個實(shí)例的ES主機(jī)稱為節(jié)點(diǎn)南誊,它是集群的一個成員身诺,可以存儲數(shù)據(jù)、參與集群索引及搜索抄囚,操作節(jié)點(diǎn)通過為其配置的ES集群名稱確定其所要加入的集群霉赡,用戶可以按需要自定義任何希望使用的名稱,但出于管理的目的幔托,此名稱應(yīng)該盡可能有較好的識別性可以將請求發(fā)送到集群中的任何節(jié)點(diǎn),包括主節(jié)點(diǎn)同廉。每個節(jié)點(diǎn)都知道任意文檔所處的位置,并且能夠?qū)⒄埱笾苯愚D(zhuǎn)發(fā)到存儲我們所需文檔的節(jié)點(diǎn)

7.分片(shared)和副本(replica)

ES的“分片(shard)”機(jī)制可將一個索引內(nèi)部的數(shù)據(jù)分布地存儲于多個節(jié)點(diǎn)柑司,它通過將一個索引切分為多個底層物理的Lucene索引完成索引數(shù)據(jù)的分割存儲功能迫肖,這每一個物理的Lucene索引稱為一個分片(shard)。每個分片其內(nèi)部都是一個全功能且獨(dú)立的索引,創(chuàng)建索引時(shí)攒驰,用戶可指定其分片的數(shù)量蟆湖,默認(rèn)數(shù)量為5個

Shard有兩種類型:primary和replica,即主shard及副本shard玻粪。

Primary shard用于文檔存儲隅津,每個新的索引會自動創(chuàng)建5個Primary shard,當(dāng)然此數(shù)量可在索引創(chuàng)建之前通過配置自行定義劲室,不過伦仍,一旦創(chuàng)建完成,其Primary shard的數(shù)量將不可更改很洋。

Replica shard是Primary Shard的副本充蓝,用于冗余數(shù)據(jù)及提高搜索性能。

每個Primary shard默認(rèn)配置了一個Replica shard喉磁,但也可以配置多個谓苟,且其數(shù)量可動態(tài)更改。ES會根據(jù)需要自動增加或減少這些Replica shard的數(shù)量协怒。ES集群可由多個節(jié)點(diǎn)組成涝焙,各Shard分布式地存儲于這些節(jié)點(diǎn)上。ES可自動在節(jié)點(diǎn)間按需要移動shard孕暇,例如增加節(jié)點(diǎn)或節(jié)點(diǎn)故障時(shí)仑撞。簡而言之赤兴,分片實(shí)現(xiàn)了集群的分布式存儲,而副本實(shí)現(xiàn)了其分布式處理及冗余功能

三 . 數(shù)據(jù)查詢

Query API是ElasticSearch的API中較大的一部分隧哮,基于Query DSL(JSON based language for building complex queries)搀缠,可完成諸多類型查詢操作,

查詢執(zhí)行過程通常要分成兩個階段近迁,分散階段及合并階段;分散階段是向所查詢的索引中的所有shard發(fā)起執(zhí)行查詢的過程,合并階段是將各shard返回的結(jié)果合并簸州、排序并響應(yīng)給客戶端的過程

向ElasticSearch發(fā)起查詢操作有兩種方式:一是通過RESTful request API傳遞查詢參數(shù)鉴竭,也稱“query-string”;另一個是通過發(fā)送REST request body岸浑,也稱作JSON格式

向ElasticSearch發(fā)起查詢操作有兩種方式:一是通過RESTful request API傳遞查詢參數(shù)搏存,也稱“query-string”;另一個是通過發(fā)送REST request body矢洲,也稱作JSON格式璧眠。

search_api


request body

(1) 空搜索?GET /_search

hits:返回結(jié)果中最重要的部分,在?hits?數(shù)組中每個結(jié)果包含文檔的?_index?读虏、?_type?责静、?_id?,加上?_source?字段

took:執(zhí)行整個搜索請求耗費(fèi)了多少毫秒

shards:?查詢中參與分片的總數(shù)盖桥,已經(jīng)這些分片成功了多少失敗了多少

(2) 多索引灾螃,多類型

/_search? ? ? ? ? ? ?在所有的索引中搜索所有的類型

/gb/_search? ? ? ? 在?gb?索引中搜索所有的類型

/gb,us/_search? ?在?gb?和?us?索引中搜索所有的文檔

/g*,u*/_search? ? ? 在任何以?g?或者?u?開頭的索引中搜索所有的類型

/gb/user/_search? ?在?gb?索引中搜索?user?類型

/gb,us/user,tweet/_search? ?在?gb?和?us?索引中搜索?user?和?tweet?類型

/_all/user,tweet/_search? 在所有的索引中搜索?user?和?tweet?類型

(3) .查詢表達(dá)式

結(jié)構(gòu)
一個完整的查詢請求

match_all:查詢簡單的,匹配所有文檔揩徊,在沒有指定查詢方式時(shí)腰鬼,它是默認(rèn)的查詢

match:全文搜索+精確查詢,在執(zhí)行查詢前塑荒,它將用正確的分析器去分析查詢字符串

multi_match :在多個字段上執(zhí)行相同的match語句

range:查詢找出落在指定區(qū)間的數(shù)字或時(shí)間

term:精確值匹配熄赡,查詢對于輸入的文本不分析,所以它將給定的值進(jìn)行精確查詢

terms:?查詢和term一樣齿税,允許多值進(jìn)行匹配

exists:指定字段的值是否存在

missing :指定字段的值是否沒有

(4) .合并查詢語句

bool : 將多查詢組合在一起

must: 文檔?必須?匹配這些條件才能被包含進(jìn)來彼硫。

must_not:文檔必須不匹配這些條件才可以被包含進(jìn)來

Should:?如果滿足這些語句中的任意語句,將增加?_score?凌箕,否則乌助,無任何影響。它們主要用于修正每個文檔的相關(guān)性得分

filter:?必須匹配陌知,但它以不評分他托、過濾模式來進(jìn)行。這些語句對評分沒有貢獻(xiàn)仆葡,只是根據(jù)過濾標(biāo)準(zhǔn)來排除或包含文檔

在實(shí)際開發(fā)過程中赏参,會根據(jù)不同的業(yè)務(wù)志笼,會出現(xiàn)各種不同程度的查詢語句和組合語句

四.倒排索引

倒排索引是搜索引擎的核心,主要作用快速搜索把篓;在搜索引擎中纫溃,每個文檔都有一個對應(yīng)的文檔ID,文檔內(nèi)容被表示為一系列關(guān)鍵詞的集合

參考文檔:elasticsearch 權(quán)威指南

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末韧掩,一起剝皮案震驚了整個濱河市紊浩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疗锐,老刑警劉巖坊谁,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滑臊,居然都是意外死亡口芍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門雇卷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鬓椭,“玉大人,你說我怎么就攤上這事关划⌒∪荆” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵贮折,是天一觀的道長氧映。 經(jīng)常有香客問我,道長脱货,這世上最難降的妖魔是什么岛都? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮振峻,結(jié)果婚禮上臼疫,老公的妹妹穿的比我還像新娘。我一直安慰自己扣孟,他們只是感情好烫堤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凤价,像睡著了一般鸽斟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上利诺,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天富蓄,我揣著相機(jī)與錄音,去河邊找鬼慢逾。 笑死立倍,一個胖子當(dāng)著我的面吹牛灭红,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播口注,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼变擒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寝志?” 一聲冷哼從身側(cè)響起娇斑,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎材部,沒想到半個月后毫缆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡败富,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摩窃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兽叮。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猾愿,靈堂內(nèi)的尸體忽然破棺而出鹦聪,到底是詐尸還是另有隱情,我是刑警寧澤蒂秘,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布泽本,位于F島的核電站,受9級特大地震影響姻僧,放射性物質(zhì)發(fā)生泄漏规丽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一撇贺、第九天 我趴在偏房一處隱蔽的房頂上張望赌莺。 院中可真熱鬧,春花似錦松嘶、人聲如沸艘狭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巢音。三九已至,卻和暖如春尽超,著一層夾襖步出監(jiān)牢的瞬間官撼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工似谁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歧寺,地道東北人燥狰。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像斜筐,于是被迫代替她去往敵國和親龙致。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348