elasticsearch 的基礎(chǔ)概念及應(yīng)用

目錄

=== 1票渠、什么是elasticsearch
——1、搜索引擎干了什么
——2、elasticsearch 如何提供搜索服務(wù)
——3、elasticsearch 中的restful接口埠戳、索引、分詞器士葫、類型mapping

=== 2乞而、索引的操作
——1送悔、創(chuàng)建慢显、刪除索引
——2、索引對(duì)數(shù)據(jù)項(xiàng)的字段類型mapping
——3欠啤、在kibana中查看和管理索引

=== 3荚藻、數(shù)據(jù)的操作
——1、restfull接口的插入洁段、刪除數(shù)據(jù)項(xiàng)
——2应狱、restfull接口的查詢、批量查詢祠丝、聚合查詢疾呻、復(fù)合查詢、過(guò)濾查詢
——3写半、python的客戶端sdk 對(duì)數(shù)據(jù)條目的增岸蜗、刪、改叠蝇、查

=== 4璃岳、kibana的可視化數(shù)據(jù)
——1、kibana的功能簡(jiǎn)介
——2悔捶、kibana的索引管理和數(shù)據(jù)查詢
——3铃慷、kibana添加餅圖、柱狀圖蜕该、折線圖并選取數(shù)據(jù)
——4犁柜、kibana在dashboard中展示可視化統(tǒng)計(jì)數(shù)據(jù)

1、什么是elasticsearch

1堂淡、搜索引擎干了什么

思考一下:
(1)百度搜索赁温、谷歌搜索、必應(yīng)搜索淤齐,是怎么通過(guò)我們輸入的關(guān)鍵詞找到相關(guān)的文字鏈接的呢 股囊?
(2) 搜索引擎怎么知道哪些文章里有我想要的信息?
(3) 搜索引擎怎么去找到的這些文章更啄?
(4) 搜索引擎怎么在那么短(毫秒級(jí))時(shí)間內(nèi)檢索那么多文章稚疹?
我們不去做搜索引擎,也不必詳細(xì)知道百度內(nèi)部是什么架構(gòu),用的什么核心技術(shù)内狗。但是我們可以通過(guò)相關(guān)知識(shí)的探索大致知道怪嫌,搜索引擎實(shí)現(xiàn)的邏輯是怎么樣的,以百度為例:
首先柳沙,當(dāng)有新的網(wǎng)頁(yè)岩灭、博客、帖子被提交發(fā)布赂鲤,百度的爬蟲(chóng)服務(wù)器就把這些新的網(wǎng)頁(yè)信息下載到百度的云主機(jī)上噪径,這個(gè)動(dòng)作也可能是定期的,保障搜索的最新內(nèi)容数初。
然后找爱,下載下來(lái)的網(wǎng)頁(yè)內(nèi)容,根據(jù)標(biāo)題泡孩、主體內(nèi)容等文本信息车摄,提取分詞、關(guān)鍵詞仑鸥。并通過(guò)建立類似數(shù)據(jù)庫(kù)索引的方式吮播,提高這些關(guān)鍵詞的搜索效率。
最后眼俊,當(dāng)你在網(wǎng)頁(yè)輸入 要查找的關(guān)鍵詞意狠,百度的搜索服務(wù)器會(huì)根據(jù)關(guān)鍵詞檢索,所有有關(guān)的文檔泵琳,根據(jù)關(guān)鍵詞出現(xiàn)的頻率摄职、關(guān)鍵詞相似程度,給出排序后的文檔鏈接获列。
當(dāng)然谷市,百度也就可以修改排序置頂?shù)捻樞騺?lái)達(dá)到廣告植入的收益。
那么击孩,里面涉及到的幾個(gè)關(guān)鍵的地方:第一迫悠,定期爬取全網(wǎng)修改或者新發(fā)的文檔;第二巩梢,文檔內(nèi)容分詞和關(guān)鍵詞建立高速索引创泄;第三,通過(guò)關(guān)鍵詞查詢索引括蝠。

2鞠抑、elasticsearch 如何提供搜索服務(wù)

elasticsearch 的設(shè)計(jì)初始 根據(jù)搜索引擎lucence,據(jù)說(shuō)是一個(gè)外國(guó)佬為老婆簡(jiǎn)化查找菜譜做的(映像野史)忌警。
elasticsearch的內(nèi)部搁拙,也有分詞器,插件化的,有語(yǔ)法分詞器箕速、中文分詞器酪碘、特定語(yǔ)義分詞器等等,靈活的保留了文檔的關(guān)鍵字的意義盐茎。
elasticsearch的內(nèi)部兴垦,也有索引,類似于mysql的表結(jié)構(gòu)字柠,有索引名稱探越、索引類型、索引字段及類型募谎,也可以通過(guò)gmapping設(shè)定將某個(gè)值映射為某個(gè)類型扶关。
elasticsearch的內(nèi)部阴汇,有索引倒排数冬。大概就是說(shuō) 哪個(gè)條目有哪些索引,搜索的時(shí)候比重多少搀庶,主要是在對(duì)索引名稱查找到數(shù)據(jù)之后拐纱,根據(jù)各個(gè)字段來(lái)聚合或者過(guò)濾,具體不再展開(kāi)哥倔。

3秸架、elasticsearch 中的restful接口、索引咆蒿、分詞器东抹、類型mapping

滿足restful的接口規(guī)范,使用 put沃测、get缭黔、post、delete發(fā)送json格式的請(qǐng)求蒂破,并得到j(luò)son的響應(yīng)馏谨。
可以通過(guò)restful的接口,設(shè)置索引附迷,然后添加條目惧互。(可以理解創(chuàng)建表、插入表數(shù)據(jù)項(xiàng))
也有一個(gè)修改喇伯、刪除的接口喊儡。但不是我們關(guān)心的重點(diǎn),生產(chǎn)環(huán)境大多數(shù)不會(huì)去把他僅僅當(dāng)做數(shù)據(jù)庫(kù)使用稻据,那樣干嘛不直接選擇關(guān)系型數(shù)據(jù)庫(kù)或者k-v數(shù)據(jù)庫(kù)艾猜。
生產(chǎn)環(huán)境中,大家更加在意的是,elasticsearch集成了大規(guī)模數(shù)據(jù)存儲(chǔ)(分布式的)箩朴,索引查詢岗喉,kibana的可視化數(shù)據(jù)統(tǒng)計(jì)的功能。能夠很少工作量的情況下炸庞,拿到直觀的統(tǒng)計(jì)圖表信息钱床。

舉幾個(gè)例子:
淘寶網(wǎng)希望看看,全國(guó)在線銷售蘋果的銷量在各個(gè)地區(qū)的分別情況埠居,那么kibana的熱力圖可以直觀查看查牌。
淘寶網(wǎng)希望看看,近半年來(lái)蘋果手機(jī)在線成交情況的按半月統(tǒng)計(jì)的數(shù)據(jù)滥壕,那么kibana的柱狀圖能直接查詢到纸颜。
這些,只需要在產(chǎn)生數(shù)據(jù)的源頭绎橘,往elastic插入信息條目胁孙,然后通過(guò)查詢索引獲得圖表。
傳統(tǒng)的數(shù)據(jù)庫(kù)称鳞,需要建立復(fù)雜的關(guān)系表系統(tǒng)存儲(chǔ)數(shù)據(jù)涮较,查詢結(jié)果再單獨(dú)做一個(gè)chart的頁(yè)面來(lái)展示,費(fèi)時(shí)費(fèi)力冈止。

2狂票、索引的操作

https://www.elastic.co/guide/en/kibana/7.6/managing-indices.html
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/indices.html
(版本差異很大,確定好自己用到版本再看api)
以下操作建議多在kibana的tools里面完成熙暴,或者postman闺属。

1、創(chuàng)建周霉、刪除索引

// 一般創(chuàng)建索引會(huì)指定 分片和副本數(shù)量掂器, 以及數(shù)據(jù)條目中字段的類型、分詞方式
PUT /my_index_name
{
    settings:
    {
        "number_of_shards":3,    //  分片
        "number_of_replicas":0,  //  副本
    },
    mappings:
    {
        “index_type1”:{"properties":{...}}
        “index_type2”:{"properties":{...}}
    }
}
GET /my_index_name/_settings  // 查詢索引配置
GET _all/_settings // 查詢所有索引配置

DELETE /my_index_name // 刪除索引, 類似于刪除表(表項(xiàng)都會(huì)丟)

2诗眨、索引對(duì)數(shù)據(jù)項(xiàng)的字段類型mapping

主要是在指定條目的字段類型唉匾,默認(rèn)情況下,數(shù)字是long匠楚,帶小數(shù)是double巍膘,除了date外,其他的都是string芋簿。
其中string 分為text 和keyword 峡懈。區(qū)別在于 text 會(huì)被分詞,keyword 不會(huì)分詞与斤。影響檢索時(shí)的最小詞粒度肪康。
還有一些其他的mapping配置項(xiàng)荚恶,store選項(xiàng)、分詞器類型磷支、boost字段分?jǐn)?shù)加權(quán)谒撼、ignore_above超長(zhǎng)文本忽略分詞和索引、index可否索引選擇項(xiàng)等等雾狈。
進(jìn)階項(xiàng)為動(dòng)態(tài)mapping廓潜,此處不做展開(kāi)。我也不會(huì)善榛。

一個(gè)比較簡(jiǎn)單的例子辩蛋, ik中文分詞器的設(shè)置(ik_smart 分詞少,ik_max_word分詞多)移盆,keword和text的區(qū)別悼院,嵌套o(hù)bject的數(shù)據(jù)類型,日期的格式format

PUT books
{
  "mappings": {
    "properties":{
      "title":{
        "type":"text",
        "analyzer": "ik_max_word"
      },
      "price":{
        "type":"integer"
      },
      "addr":{
        "type":"keyword"
      },
      "company":{
        "properties":{
          "name":{"type":"text"},
          "company_addr":{"type":"text"},
          "employee_count":{"type":"integer"}
        }
      },
      "publish_date":{"type":"date","format":"yyy-MM-dd"}
    }
  }
}

直接插入咒循, 會(huì)自動(dòng)創(chuàng)建的mapping, 但是非常不推薦這樣做

PUT /lib/person/1
{
    ''name'':"tom",
    "age":25,
    "address":{
        "country":"china",
        "city":"wuhan"
    }
} // 直接插入据途, 會(huì)自動(dòng)創(chuàng)建的mapping
GET /lib/persion/_mapping  // 查詢索引的mapping

// 手動(dòng)創(chuàng)建mapping ,主要是date類型剑鞍, string的text昨凡,keyword區(qū)別
// 可以 根據(jù)查詢出來(lái)的mapping 拷貝出來(lái)爽醋,修改指定的字段類型
“properties”:{
    "title":{"type":"text"},
    "name":{"type":"text", "analyzer":"standard"}, // 標(biāo)準(zhǔn)分詞器
    "date":{"type":"date", "index":false}, // 不會(huì)被索引蚁署, 默認(rèn)每個(gè)字段都會(huì)建立倒排索引。
}

3蚂四、在kibana中查看和管理索引

https://www.elastic.co/guide/en/kibana/7.6/managing-indices.html
kibana中的索引有索引模板光戈、索引的配置settings,索引的類型映射遂赠,索引的狀態(tài)和統(tǒng)計(jì)久妆。
提供了索引管理的API 和 索引模板的API,此處不再綴述跷睦。

3筷弦、數(shù)據(jù)的操作

1、restfull接口的插入抑诸、刪除數(shù)據(jù)項(xiàng)

PUT /my_index_name/my_index_type/index_id
{
} // 指定 _id 的情況下烂琴,用put是插入 ,或者覆蓋更新

POST /my_index_name/my_index_type 
{
}  // 不指定ID的情況下蜕乡,使用post插入奸绷,由es自動(dòng)生生成_id
GET /my_index_name/my_index_type/index_id  // 已知id查詢

POST /my_index_name/my_index_type/index_id/_update 
{
}// 對(duì)指定字段的更新

 DELETE /my_index_name/my_index_type/index_id // 僅僅刪除已知id的條目

2、restfull接口的查詢层玲、批量查詢号醉、聚合查詢反症、復(fù)合查詢、過(guò)濾查詢

查詢操作是最核心的部分畔派,實(shí)際應(yīng)用中更新和刪除操作很少铅碍,主要就是插入大量數(shù)據(jù)后,做查詢和展示线椰。

// 基本查詢

// 索引和類型映射說(shuō)明
PUT /lib/user/2 
{
    "name":"zhangsan",
    "age":24,
    "birthday":"1998-12-12"
    "interests":"guitar,baskitball,haking"
}

// query查詢(基本查詢)
GET /lib/user/_search?q+name:zhangsan
GET /lib/user/_search?+interests:guitar&sort=age:desc // 愛(ài)好有g(shù)uitar 该酗,按照age排序

// term terms 查詢, 不知道分詞器
GET /lib/user/_search {“query”:{"term":{"name":"zhangsan"}}} 
GET /lib/user/_search {“query”:{"terms":{"interests":["guitar","haking"]}}} 

// match  match_phrase  match_phrase_pretix查詢, 知道分詞器
GET /lib/user/_search {“query”:{"match":{"name":"zhangsan lisi"}}}  // 會(huì)查出名字包含zhangsan 或者lisi的士嚎, 使用term/terms 查不到內(nèi)容
GET /lib/user/_search {"query":{"match_all":{}}} // 查詢所有記錄
GET /lib/user/_search {
    “_source”:["name", "address"]呜魄, // 查詢結(jié)果帶哪些字段, 也可用 include exclude 控制。
    "query":{"match_all":{}}莱衩,
    "range":{"age":{"from":20, "to":25}}, // 查詢范圍
    “sort”:{"age":{"order":"desc"}}, // 查詢結(jié)果根據(jù)字段排序
} // 查詢所有記錄

// 模糊查詢 通配符 fuzzy wildcard 
.... 找些例子

// filter 過(guò)濾查詢

// filter 查詢不計(jì)算相關(guān)性爵嗅, 速度快于query。
1笨蚁、簡(jiǎn)單過(guò)濾查詢
2睹晒、bool過(guò)濾查詢、嵌套bool過(guò)濾

// 聚合查詢括细, 求平均值伪很、最大值、最小值奋单、sum锉试、count

GET /lib/iterms/_search
{
    "eggs":{
        "price_of_sum":{"sum":{"field":"price"}}
    }
}

// 復(fù)合查詢

不例舉了,麻煩

3览濒、python的客戶端sdk 對(duì)數(shù)據(jù)條目的增呆盖、刪、改贷笛、查

pip install elasticsearch
import elasticsearch
...

4应又、kibana的可視化數(shù)據(jù)

1、kibana的功能簡(jiǎn)介

kibana 可以理解為 es的客戶端乏苦,es提供存儲(chǔ)和高效檢索數(shù)據(jù)的服務(wù)株扛,kibana將es的服務(wù)功能和配置可視化。
kibana 可以可視化配置索引:索引的mapping汇荐、setting洞就,可以查看索引的狀態(tài)和統(tǒng)計(jì)。
kibana 可以查詢數(shù)據(jù)拢驾,query查詢奖磁、filter查詢、聚合查詢等繁疤,tools工具欄能干幾乎所有restful接口的事情
kibana 可以可視化數(shù)據(jù)咖为, 將查詢的結(jié)果用圖標(biāo)展示秕狰,自定義dashboard顯示。
附加的其他功能躁染,大數(shù)據(jù)分析和集成了深度學(xué)習(xí)鸣哀,集成了監(jiān)控和告警,各種格式的生產(chǎn)日志的采集吞彤。還有些像APM我衬、SIEM一堆看似...看都不想看的功能(我理解不把東西做到平民化就是設(shè)計(jì)的根本缺陷,這個(gè)功能就廢了)

2饰恕、kibana的索引管理和數(shù)據(jù)查詢

image.png

image.png

3挠羔、kibana添加餅圖、柱狀圖埋嵌、折線圖并選取數(shù)據(jù)

查看官網(wǎng)教程

4破加、kibana在dashboard中展示可視化統(tǒng)計(jì)數(shù)據(jù)

查看官網(wǎng)教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雹嗦,隨后出現(xiàn)的幾起案子范舀,更是在濱河造成了極大的恐慌,老刑警劉巖了罪,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭环,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泊藕,警方通過(guò)查閱死者的電腦和手機(jī)辅辩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吱七,“玉大人汽久,你說(shuō)我怎么就攤上這事∮徊停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵臀稚,是天一觀的道長(zhǎng)吝岭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吧寺,這世上最難降的妖魔是什么窜管? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮稚机,結(jié)果婚禮上幕帆,老公的妹妹穿的比我還像新娘。我一直安慰自己赖条,他們只是感情好失乾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布常熙。 她就那樣靜靜地躺著,像睡著了一般碱茁。 火紅的嫁衣襯著肌膚如雪裸卫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天纽竣,我揣著相機(jī)與錄音墓贿,去河邊找鬼。 笑死蜓氨,一個(gè)胖子當(dāng)著我的面吹牛聋袋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穴吹,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舱馅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了刀荒?” 一聲冷哼從身側(cè)響起代嗤,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缠借,沒(méi)想到半個(gè)月后干毅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泼返,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年硝逢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绅喉。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渠鸽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柴罐,到底是詐尸還是另有隱情徽缚,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布革屠,位于F島的核電站凿试,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏似芝。R本人自食惡果不足惜那婉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望党瓮。 院中可真熱鬧详炬,春花似錦、人聲如沸寞奸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至呻率,卻和暖如春硬毕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背礼仗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工吐咳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人元践。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓韭脊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親单旁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沪羔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354