ElasticSearch入门
一、全文檢索基礎(chǔ)
將非結(jié)構(gòu)化數(shù)據(jù)中的一部分信息提取出來(lái),重新組織,使其變得有一定結(jié)構(gòu),然后對(duì)此有一定結(jié)構(gòu)的數(shù) 據(jù)進(jìn)行搜索,從而達(dá)到搜索相對(duì)較快的目的。這部分從非結(jié)構(gòu)化數(shù)據(jù)中提取出的然后重新組織的信息, 我們稱之索引。 例如:字典。字典的拼音表和部首檢字表就相當(dāng)于字典的索引,對(duì)每一個(gè)字的解釋是非結(jié)構(gòu)化的,如果 字典沒(méi)有音節(jié)表和部首檢字表,在茫茫辭海中找一個(gè)字只能順序掃描。然而字的某些信息可以提取出來(lái) 進(jìn)行結(jié)構(gòu)化處理,比如讀音,就比較結(jié)構(gòu)化,分聲母和韻母,分別只有幾種可以一一列舉,于是將讀音 拿出來(lái)按一定的順序排列,每一項(xiàng)讀音都指向此字的詳細(xì)解釋的頁(yè)數(shù)。我們搜索時(shí)按結(jié)構(gòu)化的拼音搜到 讀音,然后按其指向的頁(yè)數(shù),便可找到我們的非結(jié)構(gòu)化數(shù)據(jù)——也即對(duì)字的解釋。 這種先建立索引,再對(duì)索引進(jìn)行搜索的過(guò)程就叫全文檢索(Full-text Search)。 雖然創(chuàng)建索引的過(guò)程也是非常耗時(shí)的,但是索引一旦創(chuàng)建就可以多次使用,全文檢索主要處理的是查 詢,所以耗時(shí)間創(chuàng)建索引是值得的。
二、ElasticSearch簡(jiǎn)介
2.1 什么是ElasticSearch
Elaticsearch,簡(jiǎn)稱為es, es是一個(gè)開源的高擴(kuò)展的分布式全文檢索引擎,它可以近乎實(shí)時(shí)的存儲(chǔ)、檢 索數(shù)據(jù);本身擴(kuò)展性很好,可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)別的數(shù)據(jù)。es也使用Java開發(fā)并使用 Lucene作為其核心來(lái)實(shí)現(xiàn)所有索引和搜索的功能,但是它的目的是通過(guò)簡(jiǎn)單的RESTful API來(lái)隱藏 Lucene的復(fù)雜性,從而讓全文搜索變得簡(jiǎn)單。
2.2 ElasticSearch的使用案例
2.3 ElasticSearch對(duì)比Solr
三、ElasticSearch相關(guān)概念(術(shù)語(yǔ))
3.1 概述
Elasticsearch是面向文檔(document oriented)的,這意味著它可以存儲(chǔ)整個(gè)對(duì)象或文檔(document)。 然而它不僅僅是存儲(chǔ),還會(huì)索引(index)每個(gè)文檔的內(nèi)容使之可以被搜索。在Elasticsearch中,你可以對(duì) 文檔(而非成行成列的數(shù)據(jù))進(jìn)行索引、搜索、排序、過(guò)濾。Elasticsearch比傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)如下:
Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields3.2 Elasticsearch核心概念
3.2.1 索引 index
一個(gè)索引就是一個(gè)擁有幾分相似特征的文檔的集合。比如說(shuō),你可以有一個(gè)客戶數(shù)據(jù)的索引,另一個(gè)產(chǎn) 品目錄的索引,還有一個(gè)訂單數(shù)據(jù)的索引。一個(gè)索引由一個(gè)名字來(lái)標(biāo)識(shí)(必須全部是小寫字母的),并 且當(dāng)我們要對(duì)對(duì)應(yīng)于這個(gè)索引中的文檔進(jìn)行索引、搜索、更新和刪除的時(shí)候,都要使用到這個(gè)名字。在 一個(gè)集群中,可以定義任意多的索引。
3.2.2 類型 type
在一個(gè)索引中,你可以定義一種或多種類型。一個(gè)類型是你的索引的一個(gè)邏輯上的分類/分區(qū),其語(yǔ)義 完全由你來(lái)定。通常,會(huì)為具有一組共同字段的文檔定義一個(gè)類型。比如說(shuō),我們假設(shè)你運(yùn)營(yíng)一個(gè)博客 平臺(tái)并且將你所有的數(shù)據(jù)存儲(chǔ)到一個(gè)索引中。在這個(gè)索引中,你可以為用戶數(shù)據(jù)定義一個(gè)類型,為博客 數(shù)據(jù)定義另一個(gè)類型,當(dāng)然,也可以為評(píng)論數(shù)據(jù)定義另一個(gè)類型。
3.2.3 字段Field
相當(dāng)于是數(shù)據(jù)表的字段,對(duì)文檔數(shù)據(jù)根據(jù)不同屬性進(jìn)行的分類標(biāo)識(shí)
3.2.4 映射 mapping
mapping是處理數(shù)據(jù)的方式和規(guī)則方面做一些限制,如某個(gè)字段的數(shù)據(jù)類型、默認(rèn)值、分析器、是否被 索引等等,這些都是映射里面可以設(shè)置的,其它就是處理es里面數(shù)據(jù)的一些使用規(guī)則設(shè)置也叫做映射, 按著最優(yōu)規(guī)則處理數(shù)據(jù)對(duì)性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能對(duì)性能 更好。
3.2.5 文檔 document
一個(gè)文檔是一個(gè)可被索引的基礎(chǔ)信息單元。比如,你可以擁有某一個(gè)客戶的文檔,某一個(gè)產(chǎn)品的一個(gè)文 檔,當(dāng)然,也可以擁有某個(gè)訂單的一個(gè)文檔。文檔以JSON(Javascript Object Notation)格式來(lái)表 示,而JSON是一個(gè)到處存在的互聯(lián)網(wǎng)數(shù)據(jù)交互格式。 在一個(gè)index/type里面,你可以存儲(chǔ)任意多的文檔。注意,盡管一個(gè)文檔,物理上存在于一個(gè)索引之 中,文檔必須被索引/賦予一個(gè)索引的type。
3.2.6 接近實(shí)時(shí)
NRT Elasticsearch是一個(gè)接近實(shí)時(shí)的搜索平臺(tái)。這意味著,從索引一個(gè)文檔直到這個(gè)文檔能夠被搜索到有一 個(gè)輕微的延遲(通常是1秒以內(nèi))
3.2.7 集群 cluster
一個(gè)集群就是由一個(gè)或多個(gè)節(jié)點(diǎn)組織在一起,它們共同持有整個(gè)的數(shù)據(jù),并一起提供索引和搜索功能。 一個(gè)集群由一個(gè)唯一的名字標(biāo)識(shí),這個(gè)名字默認(rèn)就是“elasticsearch”。這個(gè)名字是重要的,因?yàn)橐粋€(gè)節(jié) 點(diǎn)只能通過(guò)指定某個(gè)集群的名字,來(lái)加入這個(gè)集群
3.2.8 節(jié)點(diǎn) node
Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields 一個(gè)節(jié)點(diǎn)是集群中的一個(gè)服務(wù)器,作為集群的一部分,它存儲(chǔ)數(shù)據(jù),參與集群的索引和搜索功能。和集 群類似,一個(gè)節(jié)點(diǎn)也是由一個(gè)名字來(lái)標(biāo)識(shí)的,默認(rèn)情況下,這個(gè)名字是一個(gè)隨機(jī)的漫威漫畫角色的名 字,這個(gè)名字會(huì)在啟動(dòng)的時(shí)候賦予節(jié)點(diǎn)。這個(gè)名字對(duì)于管理工作來(lái)說(shuō)挺重要的,因?yàn)樵谶@個(gè)管理過(guò)程 中,你會(huì)去確定網(wǎng)絡(luò)中的哪些服務(wù)器對(duì)應(yīng)于Elasticsearch集群中的哪些節(jié)點(diǎn)。 一個(gè)節(jié)點(diǎn)可以通過(guò)配置集群名稱的方式來(lái)加入一個(gè)指定的集群。默認(rèn)情況下,每個(gè)節(jié)點(diǎn)都會(huì)被安排加入 到一個(gè)叫做“elasticsearch”的集群中,這意味著,如果你在你的網(wǎng)絡(luò)中啟動(dòng)了若干個(gè)節(jié)點(diǎn),并假定它們 能夠相互發(fā)現(xiàn)彼此,它們將會(huì)自動(dòng)地形成并加入到一個(gè)叫做“elasticsearch”的集群中。 在一個(gè)集群里,只要你想,可以擁有任意多個(gè)節(jié)點(diǎn)。而且,如果當(dāng)前你的網(wǎng)絡(luò)中沒(méi)有運(yùn)行任何 Elasticsearch節(jié)點(diǎn),這時(shí)啟動(dòng)一個(gè)節(jié)點(diǎn),會(huì)默認(rèn)創(chuàng)建并加入一個(gè)叫做“elasticsearch”的集群。
總結(jié)
以上是生活随笔為你收集整理的ElasticSearch入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: STM32WL芯片解锁方法
- 下一篇: 浅谈数字媒体艺术中的技术应用-1-技术概