cluster |
整個elasticsearch 默認(rèn)就是集群狀態(tài),整個集群是一份完整、互備的數(shù)據(jù)。 |
node |
集群中的一個節(jié)點,一般只一個進(jìn)程就是一個node |
shard |
分片,即使是一個節(jié)點中的數(shù)據(jù)也會通過hash算法,分成多個片存放,默認(rèn)是5片。 |
index |
相當(dāng)于rdbms的database, 對于用戶來說是一個邏輯數(shù)據(jù)庫,雖然物理上會被分多個shard存放,也可能存放在多個node中。 |
type |
類似于rdbms的table,但是與其說像table,其實更像面向?qū)ο笾械腸lass , 同一Json的格式的數(shù)據(jù)集合。 |
document |
類似于rdbms的 row、面向?qū)ο罄锏膐bject |
field |
相當(dāng)于字段、屬性 |
利用kibana學(xué)習(xí) elasticsearch restful api (DSL)****
執(zhí)行bin目錄下的kibana程序:
cd?/opt/kibana-5.6.4-linux-x86_64/bin
./kibana
es中保存的數(shù)據(jù)結(jié)構(gòu)
public class ?Movie { ?String id; ?????String name; ?????Double doubanScore; ?????List<Actor> actorList; } ? public class Actor{ String id; String name; } |
這兩個對象如果放在關(guān)系型數(shù)據(jù)庫保存,會被拆成2張表,但是elasticsearch是用一個json來表示一個document。
所以他保存到es中應(yīng)該是:
{ ??“id”:”1”, ??“name”:”operation red sea”, ??“doubanScore”:”8.5”, ??“actorList”:[ ? {“id”:”1”,”name”:”zhangyi”}, {“id”:”2”,”name”:”haiqing”}, {“id”:”3”,”name”:”zhanghanyu”} ] } |
對數(shù)據(jù)的操作增刪改查
查看es中有哪些索引
GET /_cat/indices?v |
es 中會默認(rèn)存在一個名為.kibana的索引
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana sBDZ-v6YQMWx9GaQOmSQQg 1 1 1 0 3.2kb 3.2kb
表頭的含義
health |
green(集群完整) yellow(單點正常、集群不完整) red(單點不正常) |
status |
是否能使用 |
index |
索引名 |
uuid |
索引統(tǒng)一編號 ???????? |
pri |
主節(jié)點幾個 |
rep |
從節(jié)點幾個 |
docs.count |
文檔數(shù) |
docs.deleted |
文檔被刪了多少 |
store.size |
整體占空間大小 |
pri.store.size |
主節(jié)點占 |
增加一個索引
PUT /movie_index |
{
“acknowledged”: true,
“shards_acknowledged”: true,
“index”: “movie_index”
}
刪除一個索引
ES 是不刪除也不修改任何數(shù)據(jù)
DELETE /movie_index |
{
“acknowledged”: true
}
新增文檔
格式 :PUT /index/type/id
PUT /movie_index/movie/1 { "id":1, ??"name":"operation red sea", ??"doubanScore":8.5, ??"actorList":[ ? {"id":1,"name":"zhang yi"}, {"id":2,"name":"hai qing"}, {"id":3,"name":"zhang han yu"} ] } PUT /movie_index/movie/2 { ??"id":2, ??"name":"operation meigong river", ??"doubanScore":8.0, ??"actorList":[ ? {"id":3,"name":"zhang han yu"} ] } ? PUT /movie_index/movie/3 { ??"id":3, ??"name":"incident red sea", ??"doubanScore":5.0, ??"actorList":[ ? {"id":4,"name":"zhang chen"} ] } |
如果之前沒建過index或者type,es 會自動創(chuàng)建。
直接用id查找
GET movie_index/movie/1 |
修改**—**整體替換
和新增沒有區(qū)別
PUT /movie_index/movie/3 { ??"id":"3", ??"name":"incident red sea", ??"doubanScore":"5.0", ??"actorList":[ ? {"id":"1","name":"zhang chen"} ] } |
修改**—某個字段******
POST movie_index/movie/3/_update { ??"doc": { ????"doubanScore":"7.0" ??} } |
修改**—某個字段和****?修改****—**整體替換二者選一,否則:
刪除一個document
DELETE movie_index/movie/3 |
{
“found”: true,
“_index”: “movie_index”,
“_type”: “movie”,
“_id”: “3”,
“_version”: 18,
“result”: “deleted”,
“_shards”: {
“total”: 2,
“successful”: 1,
“failed”: 0
}
}
搜索type全部數(shù)據(jù)
GET movie_index/movie/_search |
結(jié)果
{ ??"took": 2, ???//耗費(fèi)時間 毫秒 ??"timed_out": false, //是否超時 ??"_shards": { ????"total": 5, ??//發(fā)送給全部5個分片 ????"successful": 5, ????"skipped": 0, ????"failed": 0 ??}, ??"hits": { ????"total": 3, ?//命中3條數(shù)據(jù) ????"max_score": 1, ??//最大評分 ????"hits": [ ?// 結(jié)果 ??????{ ????????"_index": "movie_index", ????????"_type": "movie", ????????"_id": 2, ????????"_score": 1, ????????"_source": { ??????????"id": "2", ??????????"name": "operation meigong river", ??????????"doubanScore": 8.0, ??????????"actorList": [ ????????????{ ??????????????"id": "1", ??????????????"name": "zhang han yu" ????????????} ??????????] ????????} ??????????。。。。。。。。 ??????????。。。。。。。。 ??????} |
按條件查詢(全部)
GET movie_index/movie/_search { ??"query":{ ????"match_all": {} ??} } |
按分詞查詢
GET movie_index/movie/_search { ??"query":{ ????"match": {"name":"red"} ??} } |
注意結(jié)果的評分
按分詞子屬性查詢
GET movie_index/movie/_search { ??"query":{ ????"match": {"actorList.name":"zhang"} ??} } |
結(jié)果:
{
“took”: 2,
“timed_out”: false,
“_shards”: {
“total”: 5,
“successful”: 5,
“skipped”: 0,
“failed”: 0
},
“hits”: {
“total”: 2,
“max_score”: 1,
“hits”: [
{
“_index”: “movie_index”,
“_type”: “movie”,
“_id”: “2”,
“_score”: 1,
“_source”: {
“id”: 2,
“name”: “operation meigong river”,
“doubanScore”: 8,
“actorList”: [
{
“id”: 3,
“name”: “zhang han yu”
}
]
}
},
{
“_index”: “movie_index”,
“_type”: “movie”,
“_id”: “1”,
“_score”: 1,
“_source”: {
“id”: 1,
“name”: “operation red sea”,
“doubanScore”: 8.5,
“actorList”: [
{
“id”: 1,
“name”: “zhang yi”
},
{
“id”: 2,
“name”: “hai qing”
},
{
“id”: 3,
“name”: “zhang han yu”
}
]
}
}
]
}
}
match phrase
GET movie_index/movie/_search { ????"query":{ ??????"match_phrase": {"name":"operation red"} ????} } |
按短語查詢,不再利用分詞技術(shù),直接用短語在原始數(shù)據(jù)中匹配
我就不發(fā)結(jié)果了,太長的博客也不好看。
fuzzy查詢
GET movie_index/movie/_search { ????"query":{ ??????"fuzzy": {"name":"rad"} ????} } |
校正匹配分詞,當(dāng)一個單詞都無法準(zhǔn)確匹配,es通過一種算法對非常接近的單詞也給與一定的評分,能夠查詢出來,但是消耗更多的性能。
過濾–查詢后過濾
GET movie_index/movie/_search { ????"query":{ ??????"match": {"name":"red"} ????}, ????"post_filter":{ ??????"term": { ????????"actorList.id": 3 ??????} ????} } |
先查詢后過濾效率慢,好比,我先從全國所有人中先過濾其他省份的留下廣東的,再查詢比先查詢?nèi)珖腥嗽龠^濾廣東的
過濾–查詢前過濾(推薦)
GET movie_index/movie/_search { ????"query":{ ????????"bool":{ ??????????"filter":[ {"term": { ?"actorList.id": "1" ?}}, ?????????????????????{"term": { ?"actorList.id": "3" ?}} ???????????], ???????????"must":{"match":{"name":"red"}} ?????????} ????} } |
過濾–按范圍過濾
GET movie_index/movie/_search { ???"query": { ?????"bool": { ???????"filter": { ?????????"range": { ????????????"doubanScore": {"gte": 8} ?????????} ???????} ?????} ???} } |
關(guān)于范圍操作符:
gt |
大于 |
lt |
小于 |
gte |
大于等于 |
lte |
小于等于 |
排序
GET movie_index/movie/_search { ??"query":{ ????"match": {"name":"red sea"} ??} ??, "sort": [ ????{ ??????"doubanScore": { ????????"order": "desc" ??????} ????} ??] } |
這個先按名稱后按red sea排序
分頁查詢
GET movie_index/movie/_search { ??"query": { "match_all": {} }, ??"from": 1, ??"size": 1 } |
指定查詢的字段
GET movie_index/movie/_search { ??"query": { "match_all": {} }, ??"_source": ["name", "doubanScore"] } |
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)Java工程師,想要提升技能,往往是自己摸索成長或者是報班學(xué)習(xí),但對于培訓(xùn)機(jī)構(gòu)動則幾千的學(xué)費(fèi),著實壓力不小。自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Java開發(fā)全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上Java開發(fā)知識點,真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且會持續(xù)更新!
如果你覺得這些內(nèi)容對你有幫助,可以掃碼獲?。。。▊渥ava獲取)

最后
整理的這些資料希望對Java開發(fā)的朋友們有所參考以及少走彎路,本文的重點是你有沒有收獲與成長,其余的都不重要,希望讀者們能謹(jǐn)記這一點。
其實面試這一塊早在第一個說的25大面試專題就全都有的。以上提及的這些全部的面試+學(xué)習(xí)的各種筆記資料,我這差不多來回搞了三個多月,收集整理真的很不容易,其中還有很多自己的一些知識總結(jié)。正是因為很麻煩,所以對以上這些學(xué)習(xí)復(fù)習(xí)資料感興趣
《一線大廠Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實戰(zhàn)項目源碼》,點擊傳送門即可獲?。?/strong>
備注Java獲?。?*

最后
整理的這些資料希望對Java開發(fā)的朋友們有所參考以及少走彎路,本文的重點是你有沒有收獲與成長,其余的都不重要,希望讀者們能謹(jǐn)記這一點。
[外鏈圖片轉(zhuǎn)存中…(img-3KVp7N09-1711887511378)]
[外鏈圖片轉(zhuǎn)存中…(img-poJQAmG4-1711887511378)]文章來源:http://www.zghlxwxcb.cn/news/detail-853095.html
其實面試這一塊早在第一個說的25大面試專題就全都有的。以上提及的這些全部的面試+學(xué)習(xí)的各種筆記資料,我這差不多來回搞了三個多月,收集整理真的很不容易,其中還有很多自己的一些知識總結(jié)。正是因為很麻煩,所以對以上這些學(xué)習(xí)復(fù)習(xí)資料感興趣
《一線大廠Java面試題解析+核心總結(jié)學(xué)習(xí)筆記+最新講解視頻+實戰(zhàn)項目源碼》,點擊傳送門即可獲??!文章來源地址http://www.zghlxwxcb.cn/news/detail-853095.html
到了這里,關(guān)于全文檢索工具elasticsearch:第一章:理論知識的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!