Elasticsearch 是一個(gè)分布式、可擴(kuò)展、實(shí)時(shí)的搜索與數(shù)據(jù)分析引擎, 基于Lucene和Restful接口将硝,它提供了一個(gè)分布式多用戶(hù)能力的全文搜索引擎岩四。
同時(shí)哭尝,它又不僅僅只是全文搜索,它還能實(shí)現(xiàn)結(jié)構(gòu)化搜索剖煌、數(shù)據(jù)分析材鹦、復(fù)雜的人類(lèi)語(yǔ)言處理、地理位置和對(duì)象間關(guān)聯(lián)關(guān)系等
怎么理解Elasticsearch
- 一個(gè)分布式的實(shí)時(shí)文檔存儲(chǔ)耕姊,每個(gè)字段 可以被索引與搜索
- 一個(gè)分布式實(shí)時(shí)分析搜索引擎
- 能勝任上百個(gè)服務(wù)節(jié)點(diǎn)的擴(kuò)展桶唐,并支持 PB 級(jí)別的結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)
面向文檔
Elasticsearch 是面向文檔的,意味著它存儲(chǔ)整個(gè)對(duì)象或文檔茉兰。Elasticsearch 不僅存儲(chǔ)文檔尤泽,而且索引每個(gè)文檔的內(nèi)容,使之可以被檢索规脸。在 Elasticsearch 中坯约,我們對(duì)文檔進(jìn)行索引、檢索莫鸭、排序和過(guò)濾--而不是對(duì)行列數(shù)據(jù)闹丐。這是一種完全不同的思考數(shù)據(jù)的方式,也是 Elasticsearch 能支持復(fù)雜全文檢索的原因被因。
Elasticsearch的主要概念:
節(jié)點(diǎn)
它指的是Elasticsearch的單個(gè)正在運(yùn)行的實(shí)例卿拴。單個(gè)物理和虛擬服務(wù)器容納多個(gè)節(jié)點(diǎn)衫仑,這取決于其物理資源的能力,如RAM巍棱,存儲(chǔ)和處理能力惑畴。
集群
它是一個(gè)或多個(gè)節(jié)點(diǎn)的集合。 集群為整個(gè)數(shù)據(jù)提供跨所有節(jié)點(diǎn)的集合索引和搜索功能航徙。
索引
它是不同類(lèi)型的文檔和文檔屬性的集合如贷。索引還使用分片的概念來(lái)提高性能。 例如到踏,一組文檔包含社交網(wǎng)絡(luò)應(yīng)用的數(shù)據(jù)杠袱。
類(lèi)型/映射
它是共享同一索引中存在的一組公共字段的文檔的集合。 例如窝稿,索引包含社交網(wǎng)絡(luò)應(yīng)用的數(shù)據(jù)楣富,然后它可以存在用于用戶(hù)簡(jiǎn)檔數(shù)據(jù)的特定類(lèi)型,另一類(lèi)型可用于消息的數(shù)據(jù)伴榔,以及另一類(lèi)型可用于評(píng)論的數(shù)據(jù)纹蝴。
文檔
它是以JSON格式定義的特定方式的字段集合。每個(gè)文檔都屬于一個(gè)類(lèi)型并駐留在索引中踪少。每個(gè)文檔都與唯一標(biāo)識(shí)符(稱(chēng)為UID)相關(guān)聯(lián)塘安。
碎片
索引被水平細(xì)分為碎片。這意味著每個(gè)碎片包含文檔的所有屬性援奢,但包含的數(shù)量比索引少兼犯。水平分隔使碎片成為一個(gè)獨(dú)立的節(jié)點(diǎn),可以存儲(chǔ)在任何節(jié)點(diǎn)中集漾。主碎片是索引的原始水平部分切黔,然后這些主碎片被復(fù)制到副本碎片中。
副本
Elasticsearch允許用戶(hù)創(chuàng)建其索引和分片的副本具篇。 復(fù)制不僅有助于在故障情況下增加數(shù)據(jù)的可用性纬霞,而且還通過(guò)在這些副本中執(zhí)行并行搜索操作來(lái)提高搜索的性能。
Elasticsearch的健康檢查
GET /_cluster/health
返回
{
"cluster_name": "elasticsearch",
"status": "green",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 0,
"active_shards": 0,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0
}
green
所有的主分片和副本分片都正常運(yùn)行栽连。
yellow
所有的主分片都正常運(yùn)行险领,但不是所有的副本分片都正常運(yùn)行。
red
有主分片沒(méi)能正常運(yùn)行秒紧。
Elasticsearch的優(yōu)點(diǎn)
- Elasticsearch是基于Java開(kāi)發(fā)的,有跨平臺(tái)的特性挨下。
- Elasticsearch是實(shí)時(shí)的熔恢,換句話(huà)說(shuō),一秒鐘后臭笆,添加的文檔可以在這個(gè)引擎中搜索得到叙淌。
- Elasticsearch是分布式的秤掌,這使得它易于在任何大型組織中擴(kuò)展和集成。
- 通過(guò)使用Elasticsearch中的網(wǎng)關(guān)概念鹰霍,創(chuàng)建完整備份很容易闻鉴。
- 與Apache Solr相比,在Elasticsearch中處理多租戶(hù)非常容易茂洒。
- Elasticsearch使用JSON對(duì)象作為響應(yīng)孟岛,這使得可以使用不同的編程語(yǔ)言調(diào)用Elasticsearch服務(wù)器。
- Elasticsearch支持幾乎大部分文檔類(lèi)型督勺,但不支持文本呈現(xiàn)的文檔類(lèi)型渠羞。
Elasticsearch的缺點(diǎn)
- Elasticsearch在處理請(qǐng)求和響應(yīng)數(shù)據(jù)方面僅支持JSON。
相關(guān)閱讀:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html