在非關(guān)系型數(shù)據(jù)庫(kù)中,數(shù)據(jù)是非結(jié)構(gòu)化的,如果直接去查找效率極低,全文檢索將非結(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ù)中提取出的然后重新組織的信息。建立索引,再對(duì)索引進(jìn)行搜索的過(guò)程就叫全文檢索(Full-text Search)。在了解了全文檢索的過(guò)程后,下面介紹最近學(xué)習(xí)的ElasticSearch全文檢索引擎。
1、ElasticSearch簡(jiǎn)介
Elaticsearch,簡(jiǎn)稱為es, es是一個(gè)開(kāi)源的高擴(kuò)展的分布式全文檢索引擎,可以在java開(kāi)發(fā)中使用,其核心還是Lucene,但是es在開(kāi)發(fā)中使用
可以通過(guò)簡(jiǎn)單的RESTful API來(lái)隱藏Lucene的復(fù)雜性,從而讓全文搜索變得簡(jiǎn)單。另外es檢索和存儲(chǔ)速度極快,即搜即得到結(jié)構(gòu),修改便可近乎實(shí)時(shí)的保存。
Elaticsearch目前有被很多大型網(wǎng)站使用,如GitHub使用ElasticSearch
搜索20TB的數(shù)據(jù),包括13億文件和1300億行代碼,百度目前廣泛使用ElasticSearch作為文本數(shù)據(jù)分析,采集百度所有服務(wù)器上的各類指標(biāo)數(shù)
據(jù)及用戶自定義數(shù)據(jù),通過(guò)對(duì)各種數(shù)據(jù)進(jìn)行多維分析展示,輔助定位分析實(shí)例異?;驑I(yè)務(wù)層面異常。新浪、阿里等許多大廠也在采用Elaticsearch全文搜索引擎
2、ElasticSearch術(shù)語(yǔ)
ElasticSearch術(shù)語(yǔ)包含index索引、Types類型、Documents、Fields,其中index可以理解為是關(guān)系型數(shù)據(jù)庫(kù)里面的database,types可以對(duì)應(yīng)為關(guān)系型數(shù)據(jù)庫(kù)里面的表tables,documents可以以對(duì)應(yīng)為關(guān)系型數(shù)據(jù)庫(kù)里面的記錄,fields以以對(duì)應(yīng)為關(guān)系型數(shù)據(jù)庫(kù)里面的字段。
2.1、index索引
一個(gè)index索引就是一個(gè)擁有幾分相似特征的文檔的集合。一個(gè)索引由一個(gè)全是小寫字母組成的名字來(lái)標(biāo)識(shí),使用到這個(gè)名字對(duì)對(duì)應(yīng)于這個(gè)索引中的文檔進(jìn)行索引、搜索、更新和刪除。在一個(gè)集群中,可以定義任意多的索引。
2.2、type類型
在一個(gè)索引中,可以定義一種或多種類型。一個(gè)類型是索引的一個(gè)邏輯上的分類/分區(qū),其語(yǔ)義完全支持自定義。通常,會(huì)為具有一組共同字段的文檔定義一個(gè)類型。
2.3、document文檔
文檔是可被索引的基礎(chǔ)信息單元。文檔采用JSON格式。在index/type里面,可以存儲(chǔ)任意多的文檔。文檔在物理上存在于索引之中,但文檔必須被索引/賦予一個(gè)索引的type。
2.4、field字段
相當(dāng)于是數(shù)據(jù)表的字段,對(duì)文檔數(shù)據(jù)根據(jù)不同屬性進(jìn)行的分類標(biāo)識(shí)。
2.5、 mapping映射
mapping對(duì)處理數(shù)據(jù)的方式和規(guī)則做限制,某個(gè)字段的數(shù)據(jù)類型、默認(rèn)值、分析器、是否被索引等等都可以被映射設(shè)置,另外處理es里面數(shù)據(jù)的一些使用規(guī)則設(shè)置也叫做映射,如按著最優(yōu)規(guī)則處理數(shù)據(jù)以至于性能提高。
2.6、 cluster集群和node節(jié)點(diǎn)
集群就是由一個(gè)或多個(gè)節(jié)點(diǎn)組織在一起,所有節(jié)點(diǎn)的數(shù)據(jù)共同組成了所有數(shù)據(jù),并一起提供索引和搜索功能。每個(gè)集群都有唯一標(biāo)識(shí)的名字,默認(rèn)就是“elasticsearch”。節(jié)點(diǎn)想組成或加入集群需要共同加入同一個(gè)名字的集群。
節(jié)點(diǎn)是集群中的一個(gè)服務(wù)器,是集群的一部分,可以存儲(chǔ)數(shù)據(jù)并且參與集群的索引和搜索。每個(gè)節(jié)點(diǎn)也都有唯一標(biāo)識(shí)的名字。
3、ElasticSearch使用
使用DSL語(yǔ)言來(lái)定義查,使用全文檢索
(1)查詢所有索引
GET /_cat/indices?v
(2)刪除某個(gè)索引
DELETE /索引名文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-410762.html
在這里插入代碼片
(3)新增索引
PUT /索引名
(4)創(chuàng)建映射
PUT /索引名/type名/_mapping {
"properties": {
"name":{
"type": "text",
"analyzer": "所用的分詞器",
"search_analyzer": "所用的分詞器"
}
}
}
(5)新增文檔數(shù)據(jù)/修改數(shù)據(jù)
PUT /索引名/type名/id號(hào) {
"name":"趙二",
"age":22,
"city":"上海",
"description":"xxxxx"
}
(6)更新數(shù)據(jù)
POST /索引名/type名/id號(hào)/_update {
"doc":{
"name":"xxx",
"description":"xxxxxx"
}
}
(7)刪除Document
DELETE /索引名/type名/id號(hào)
(8)查詢所有數(shù)據(jù)
GET /索引名/_search
上面是一些常用的DSL語(yǔ)句,可以在 Kibana或者elasticsearch-head中使用進(jìn)行全文檢索文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-410762.html
到了這里,關(guān)于全文檢索學(xué)習(xí)之ElasticSearch學(xué)習(xí)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!