管理索引常用的API

二.管理索引常用的API

1.查看現有索引信息

查看所有索引信息列表:curl -X GET http://elk101.k8s.com:9200/_cat/indices?v查看某個索引的詳細信息:curl -x GET http://elk101.k8s.com:9200/linux-2020-10-2溫馨提示: (1)"?v"表示輸出表頭信息,如下所示:health status index           uuid                   pri rep docs.count docs.deleted store.size pri.store.sizegreen  open   linux-2020-10-1 JDAp11N8RVqyjGROol3J4Q   1   1          0            0       416b           208bgreen  open   bigdata         3k606BwcTIWZOHG3tRPMNA   5   2          0            0        3kb            1kbgreen  open   linux-2020-10-3 8DJBzgo2Sn2qwe-UDa8_RA   1   1          0            0       416b           208bgreen  open   linux-2020-10-2 NsO3vA-JTZ61W4OH4OqGxw   1   1          0            0       416b           208bgreen  open   linux           I0jNRp0wT8OgvR9Uf6EZow   1   1          0            0       416b           208bgreen  open   bigdata3        h1OS5CX6TomeDY_dcdy-vQ   3   1          0            0      1.2kb           624bgreen  open   bigdata2        egmZVZS6QqCpACPBe2-1LA   1   1          0            0       416b           208b(2)curl默認發送的就是GET請求;以下是對響應結果進行簡單的說明:health:green:所有分片均已分配。yellow:所有主分片均已分配,但未分配一個或多個副本分片。如果群集中的節點發生故障,則在修復該節點之前,某些數據可能不可用。red:未分配一個或多個主分片,因此某些數據不可用。在集群啟動期間,這可能會短暫發生,因為已分配了主要分片。status:索引狀態,分為打開和關閉狀態。index:索引名稱。uuid:索引唯一編號。pri:主分片數量。rep:副本數量。docs.count:可用文檔數量。docs.deleted:文檔刪除狀態(邏輯刪除)。store.size:主分片和副分片整體占空間大小。pri.store.size:主分片占空間大小。

2.創建索引

curl -X PUT http://elk101.k8s.com:9200/bigdata可選提交的數據如下:{"settings": {"index": {"number_of_replicas": "1","number_of_shards": "3"}}}溫馨提示:(1)對于提交的參數說明:"number_of_replicas"參數表示副本數。"number_of_shards"參數表示分片數。(2)對于返回的參數說明:"acknowledged"參數表示響應結果,如果為"true"表示操作成功。"shards_acknowledged"參數表示分片結果,如果為"true"表示操作成功。"index"表示索引名稱。(3)創建索引庫的分片數默認為1片,在7.0.0之前的Elasticsearch版本中,默認為5片。(4)如果重復添加索引,會返回錯誤信息;

3.刪除索引[生產環境中謹慎操作,建議先使用關閉索引一段時間在進行刪除]

根據索引模式刪除:curl -X DELETE http://elk101.k8s.com:9200/linux-2020-11*刪除某個特定的索引:curl -X DELETE http://elk101.k8s.com:9200/linux-2020-10-2

4.查看某個索引是否存在

curl -X HEAD http://elk101.k8s.com:9200/linux-2020-10-2溫馨提示:注意觀察返回的狀態碼,如果返回"200"說明該索引是存在的,如果返回"400",說明索引是不存在的。

5.索引別名

curl -X POST http://elk101.k8s.com:9200/_aliases提交數據如下:(1)添加別名:{"actions" : [{ "add" : { "index" : "linux-2020-10-3", "alias" : "linux2020" } },{ "add" : { "index" : "linux-2020-10-3", "alias" : "linux2021" } }]}(2)刪除別名{"actions" : [{ "remove" : { "index" : "linux-2020-10-3", "alias" : "linux2025" } }]}(3)重命名別名{"actions" : [{ "remove" : { "index" : "linux-2020-10-3", "alias" : "linux2023" } },{"add": { "index" :"linux-2020-10-3" , "alias" : "linux2025" }}]}(4)為多個索引同時添加別名{"actions" : [{"add": { "index" :"bigdata3" , "alias" : "linux666" }},{"add": { "index" :"bigdata2" , "alias" : "linux666" }},{"add": { "index" :"linux-2020-10*" , "alias" : "linux666" }}]}溫馨提示:(1)索引別名是用于引用一個或多個現有索引的輔助名稱。大多數Elasticsearch API接受索引別名代替索引;(2)加索引后請結合"elasticsearch-head"的WebUI進行查看;(3)一個索引可以關聯多個別名,一個別名也能被多個索引關聯;

6.關閉索引

關閉某一個索引:curl -X POST http://elk101.k8s.com:9200/linux-2020-10-1/_close關閉批量索引:curl -X POST http://elk101.k8s.com:9200/linux-2020-*/_close溫馨提示:(1)如果將索引關閉,則意味著該索引將不能執行任何打開索引狀態的所有讀寫操作,當然這樣也會為服務器節省一定的集群資源消耗;(2)生產環境中,我們可以將需要刪除的索引先臨時關閉掉,可以先關閉7個工作日,然后在執行刪除索引,因為光關閉索引盡管能減少消耗但存儲空間依舊是占用的;(3)關閉索引后,記得查看現有索引信息,并結合"elasticsearch-head"插件的WebUI界面進行查看喲;

7.打開索引

打開某一索引:curl -X POST  http://elk101.k8s.com:9200/linux-2020-10-3/_open打開批量索引:curl -X POST  http://elk101.k8s.com:9200/linux-2020-*/_open

8.其它操作

推薦閱讀:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html

三.管理文檔的基本操作API

1.添加文檔

使用POST方法創建文檔,創建文檔時會自動生成隨機文檔的"_id"(推薦方式):curl -X POST http://elk101.k8s.com:9200/shopping/_doc使用POST方法創建文檔,我們也可以自定義文檔文檔的"_id":(不推薦使用,因為在數據量比較大的時候,自定義"_id"可能會存在如何去重的情況)curl -X POST http://elk101.k8s.com:9200/shopping/_doc/10010使用PUT方法創建文檔姿勢一:curl -X PUT http://elk101.k8s.com:9200/shopping/_doc/10011使用PUT方法創建文檔姿勢二:curl -X PUT http://elk101.k8s.com:9200/shopping/_create/10012提交以下數據:{"title":"戴爾(DELL)31.5英寸 4K 曲面 內置音箱 低藍光 影院級色彩 FreeSync技術 可壁掛 1800R 電腦顯示器 S3221QS","price":3399.00 ,"brand": "Dell","weight": "15.25kg","item": "https://item.jd.com/100014940686.html"}溫馨提示:PUT方法要求冪等性,二POST方法則并不要求冪等性。所謂的冪等性可參考請求的"_id"和響應返回的"_id"是否一致。

2.查詢文檔

主鍵查詢:curl -X GET http://elk101.oldboyedu.com:9200/shopping/_doc/10012全查詢:curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search判斷文檔是否存在:(只需要觀察響應的狀態碼,如果為200說明文檔存在,如果是404說明文檔不存在)curl -X HEAD http://elk101.oldboyedu.com:9200/shopping/_doc/x0zdh3kBpj8F95BSQ5Pv一個文檔中不僅僅存在數據,它還包含了元數據(metadata),即關于文檔的信息。換句話說,就是描述數據的數據。三個必須的元數據節點是"_index","_type"和"_id":"_index":文檔添加到的索引名稱,即文檔存儲的地方。索引(index)類似于關系型數據庫里的"數據庫",它是我們存儲和索引關聯數據的地方。事實上,我們的數據被存儲和索引在分片(shards)中,索引是把一個或多個分片分組在一起的邏輯空間。然而,這只是一些內部細節,我們的程序完全不用關心分片。對于我們的程序而言,文檔存儲在索引(index)中。剩下的細節由Elasticsearch關心既可。"_type":文件類型。Elasticsearch索引現在支持單一文檔類型_doc。"_id":添加文檔的唯一標識符。id僅僅是一個字符串,它與"_index"和"_type"組合時,就可以在Elasticsearch中唯一標識一個文檔。當創建一個文檔時,你可以自定義"_id",也可以讓Elasticsearch幫你自動生成(32位長度)。溫馨提示:如果用瀏覽器查看返回數據可能看起來不太美觀,我們可以借助"pretty"參數來使得輸出的可讀性更強。當然,我們也可以借助插件喲~

3.更新文檔

全局更新:(生產環境使用較少)curl -X PUT/POST http://elk101.oldboyedu.com:9200/shopping/_doc/10012{"title": "ALIENWARE外星人新品外設高端鍵鼠套裝AW510K機械鍵盤cherry軸 RGB/AW610M 610M 無線鼠標+510K機械鍵盤+510H耳機","price": 5200.00,"brand": "ALIENWARE外星人","weight": "1.0kg","item": "https://item.jd.com/10030370257612.html"}局部更新:(生產環境經常使用)curl -X POST http://elk101.oldboyedu.com:9200/shopping/_update/10012curl -X POST http://elk101.oldboyedu.com:9200/shopping/_doc/10012/_update{"doc":{"price": 6000.00,"weight": "2.0kg"}}溫馨提示:更新局部數據時,說明每一次更新數據返回的結果都不相同,因此我們不應該使用PUT方法,而是使用POST方法喲~

4.刪除文檔

curl -X DELETE http://elk101.oldboyedu.com:9200/shopping/_doc/10012

四.ElasticSearch的DSL查詢語言

1.條件查詢

基于請求路徑實現條件查詢:curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search?q=brand:DELL基于請求體實現條件查詢:curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match":{"brand":"DELL"}}}	基于請求體實現全量查詢:curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search可選的以下請求體:{"query":{"match_all":{}}}

2.分頁查詢

	假設有20條數據,我們規定每頁僅有3條數據,我們想要查看第7頁的數據,就可以執行下面的查詢語句。curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_all":{}},"from": 18,"size": 3}字段說明:from:指定跳過的數據偏移量大小,默認是0。查詢指定頁碼的from值 = ”(頁碼 - 1) * 每頁數據條數“。size:指定顯示的數據條數大小,默認是10。在集群系統中深度分頁:我們應該當心分頁太深或者一次請求太多的結果,結果在返回前會被排序。但是記住一個搜索請求常常涉及多個分片。每個分片生成排好序的結果,它們接著需要集中起來排序以確保整體排序順序。為了理解為什么深度分頁是有問題的,讓我們假設在一個有5個主分片的索引中搜索:(1)當我們請求結果的第一頁(結果1到10)時,每個分片產生自己最頂端10個結果然后返回它們給請求節點(requesting node),它在排序這所有的50個結果以篩選出頂端的10個結果;(2)現在假設我們請求第1000頁,結果10001到10010,工作方式都相同,不同的時每個分片都必須產生頂端的10010個結果,然后請求節點排序這50050個結果并丟棄50040個;(3)你可以看到在分布式系統中,排序結果的花費隨著分頁的深入而成倍增長,這也是為什么網絡搜索引擎中任何語句返回多余1000個結果的原因;

3.只查看返回數據的指定字段

	假設有20條數據,我們規定每頁僅有3條數據,我們想要查看第7頁的數據,并只查看"brand"和"price"這兩個字段,就可以執行下面的查詢語句。curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_all":{}},"from": 18,"size": 3,"_source": ["brand","price"]}

4.查看指定字段并排序

	假設有20條數據,我們規定每頁僅有3條數據,我們想要查看第7頁的數據,并只查看"brand"和"price"這兩個字段,就可以執行下面的查詢語句。curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_all":{}},"from": 18,"size": 3,"_source": ["brand","price"],"sort":{"price":{"order":"desc"}}}溫馨提示:"desc"表示降序排列,而"asc"表示升序排列。

5.多條件查詢

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search使用must查詢,則查詢結果必須滿足所有的匹配要求,缺一不可:{"query":{"bool":{"must":[{"match":{"price": 429}},{"match":{"brand": "羅技"}}]}}}使用should查詢,則查詢結果只須滿足其中一個匹配的要求即可:{"query":{"bool":{"should":[{"match":{"price": 429}},{"match":{"brand": "DELL"}}]}}}使用"minimum_should_match"參數實現最少滿足需求的文檔數查找:{"query":{"bool":{"should":[{"match":{"brand": "華為"}},{"match":{"brand": "小米"}},// {//     "match":{//         "brand": "蘋果"//     }// },{"match":{"price": "4699"}}],"minimum_should_match": 2  // 至少要滿足2個should需求才能獲取到對應的文檔喲~}}}使用"minimum_should_match"參數實現最少滿足需求的文檔數查找,采用百分比案例:{"query":{"bool":{"should":[{"match":{"brand": "華為"}},{"match":{"brand": "小米"}},// {//     "match":{//         "brand": "蘋果"//     }// },{"match":{"price": "4699"}}],"minimum_should_match": "60%"  //可以適當調大,比如調到70%觀察命中結果!}}}溫馨提示:bool查詢可以用來合并多個條件查詢結果的布爾邏輯,這些參數可以分別繼承一個查詢或者一個查詢條件的數組。bool查詢包含以下操作符:must:多個查詢條件的完全匹配,相當于"and"。must_not:多個查詢條件的相反匹配,相當于"not"。should:至少有一個查詢條件匹配,相當于"or"。評分計算規則:(1)bool查詢會為每個文檔計算相關度評分"_score",再將所有匹配的must和should語句的分數"_score"求和,最后除以must和should語句的總數。(2)must_not語句不會影響評分,它的作用只是將不相關的文檔排除。(3)默認情況下,should中的內容不是必須匹配的,如果查詢語言中沒有must,那么就會至少匹配其中一個。當然,也可以通過"minimum_should_match"來指定匹配度,該值可以是數字(例如"2")也可以是
百分比(如"65%")。

6.范圍查詢

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"bool":{"must":[{"match":{"brand": "羅技"}}],"filter":{"range":{"price":{"gt": 100,"lt":300}}}}}}溫馨提示:(1)上面的查詢條件是匹配"brand"的值"羅技"的數據并按照"price"進行范圍過濾;(2)常用的范圍操作符包含如下所示:gt:大于。gte:大于等于。lt:小于。lte:小于等于。

7.全文檢索

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match":{"brand":"小華蘋"}}}溫馨提示:(1)盡管我們沒有"小華蘋"的品牌,但ES在查詢的時候會對"小華果"進行文字拆分,會使用倒排索引技術去查找文檔,從而查到小米, 華為,蘋果的品牌。(2)match查詢會在真正查詢之前用分詞器先分析,默認的中文分詞器并不太適合使用,生產環境建議更換分詞器,比如IK分詞器等。

8.完全匹配

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_phrase":{"brand":"小華果"}}}溫馨提示:我們可以使用"match_phrase"進行完全匹配,則返回0條匹配結果。

9.語法高亮

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_phrase":{"brand":"蘋果"}},"highlight":{"fields":{"brand":{}}}}

10.精確匹配查詢

curl -X PUT http://elk101.oldboyedu.com:9200/shopping/_search	{"query": {"term": {"price": 4699 // 查詢字段的值盡量不要使用中文喲~如果非要用,建議使用特定的分詞器!}}}{"query": {"terms": {"price": [299,4066,499]}}}溫馨提示:term主要用于精確匹配哪些值,比如數字,日期,布爾值或"not_analyzed"(未經分析的文本數據類型)的字符串。terms跟term有點類似,但terms允許指定多個匹配條件,如果某個字段指定了多個值,那么文檔需要一
定去做匹配。

11.查詢包含指定字段的文檔

    curl -X POST http://elk101.oldboyedu.com:9200/teacher/_search{"query": {"exists": {"field": "hobby"  // 只查詢含有"hobby"字段的文檔。}}}溫馨提示:(1)關于"teacher"索引的數據生成,可直接參考下面的"批量操作"創建數據的案例。(2)exists查詢可以用于查找文檔中是否包含指定字段或沒有某個字段,這個查詢只是針對已經查出一批數據來,但是想區分出某個字段是否存在的時候使用。

12.過濾查詢

    curl -X POST http://elk101.oldboyedu.com:9200/teacher/_search{"query":{"bool":{"filter":{"term":{"hobby":"linux"}}}}}match和filter查詢對比:(1)一條過濾(filter)語句會詢問每個文檔的字段值是否包含著特定值;(2)查詢(match)語句會詢問每個文檔的字段值與特定值的匹配程序如何:一條查詢(match)語句會計算每個文檔與查詢語句的相關性,會給出一個相關性評分"_score",并且按照相關性對匹配到的文檔進行排序。這種評分方式非常適用于一個沒有完全配置結果的全文本搜索。(3)一個簡單的文檔列表,快速匹配運算并存入內存是十分方便的,每個文檔僅需要1個字節。這些緩存的過濾結果集與后續請求的結果使用是非常高效的;(4)查詢(match)語句不僅要查詢相匹配的文檔,還需要計算每個文檔的相關性,所以一般來說查詢語句要比過濾語句更好使,并且查詢結果也不可緩存。溫馨提示:做精確匹配搜索時,最好用過濾語句,因為過濾語句可以緩存數據。但如果要做全文搜索,需要通過查詢語句來完成。

13.多詞搜索

(1)默認基于"or"操作符對某個字段進行多詞搜索
curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"bool":{"must":{"match":{"title":{"query":"曲面設計","operator":"or"}}}}},"highlight":{"fields":{"title":{}}}}(2)基于"and"操作符對某個字段進行多詞搜索
curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"bool":{"must":{"match":{"title":{"query":"曲面","operator":"and"}}}}},"highlight":{"fields":{"title":{}}}}

14.權重案例(了解即可)

	有些時候,我們可能需要對某些詞增加權重來影響這條數據的得分。curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search{"query": {"bool": {"must": {"match": {"brand": {"query": "小米","operator": "or"}}},"should": [{"match": {"title": {"query": "防水","boost": 10}}},{"match": {"title": {"query": "黑色","boost": 2}}}]}},"highlight": {"fields": {"title": {}}}}

15.聚合查詢

	curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search按照brand字段進行分組:{"aggs":{  // 聚合操作"brand_group":{  // 該名稱可以自定義,我習慣性基于相關字段起名稱。"terms":{  // 分組"field":"brand.keyword"  // 指定用于計算的相關字段,此處指定的時brand字段,但brand字段的fielddata默認值為false,因此此處我們需要寫brand.keyword"}}},"size": 0 // 設置顯示hits數據的大小,當size的值為0時,表示不查看原始數據!如果設置大于0,則顯示指定的數據條數。如果設置為-1,則只顯示10條,如果設置小于-1則報錯!}按照”price“字段計算所有商品的平均值:{"aggs":{  // 聚合操作"price_avg":{  // 該名稱可以自定義,我習慣性基于相關字段起名稱。"avg":{  // 分組"field":"price"  // 分組字段}}},"size": 0 // 設置顯示hits數據的大小,當size的值為0時,表示不查看原始數據!如果設置大于0,則顯示指定的數據條數。如果設置為-1,則只顯示10條,如果設置小于-1則報錯!}

五.批量操作

1.為什么要使用批量操作

	有些情況下可以通過批量操作以減少網絡請求,也可以實現可重復性的利用率。例如:批量查詢,批量插入數據。

2.批量插入操作

	溫馨提示:元數據最少要寫一個在Elasticsearch中,支持批量的插入,修改,刪除操作,都是通過"_bulk"的API完成的。批量插入請求格式如下:(請求格式不同尋常){ action: { metadata }}\n{ request body }\n{ action: { metadata }}\n{ request body }\n...批量插入數據:curl -X POST http://elk101.oldboyedu.com:9200/_bulk{"create":{"_index":"teacher","_type":"_doc","_id":9001}}{"id":1001,"name":"oldboy","gender":"Male","telephone":"1024","address":"北京沙河","hobby":"linux 象棋 羽毛球 跑步"}{"create":{"_index":"teacher","_type":"_doc"}}{"id":1002,"name":"吉澤明步","gender":"Female","telephone":"2048"}{"create":{"_index":"teacher","_type":"_doc","_id":9002}}{"id":1003,"name":"蒼老師","gender":"Female","telephone":"4096","address":"日本東京"}{"create":{"_index":"teacher"}}{"id":1004,"name":"加藤鷹","gender":"Male","telephone":"8192"}{"create":{"_index":"teacher","_id":9003}} {"id":1004,"name":"小園梨央","gender":"Female","address":"日本東京","hobby":"自拍、拉拉隊"}溫馨提示:從上面的案例可以看出,元數據最少要寫一個"_index"。而對應的提交的請求體則可以根據我們的需求自定義即可。

3.批量查詢操作

curl -X POST http://elk101.oldboyedu.com:9200/teacher/_mget{"ids":["9001","9002","9003","9005"] // 查詢ID為"9001","9002","9003","9005"的數據。}	溫馨提示:注意觀察響應的結果,如果數據沒有查詢到,則found"的值為false。

4.批量刪除數據

	在Elasticsearch中,支持批量的插入,修改,刪除操作,都是通過"_bulk"的API完成的。批量刪除請求格式如下:(請求格式不同尋常){ action: { metadata }}\n{ action: { metadata }}\n{ action: { metadata }}\n批量刪除數據:curl -X POST http://elk101.oldboyedu.com:9200/teacher/_doc/_bulk{"delete":{"_index":"teacher","_type":"_doc","_id":9001}}{"delete":{"_index":"teacher","_id":9002}}{"delete":{"_index":"teacher","_id":9003}}{"delete":{"_index":"teacher","_id":9005}}溫馨提示:(1)關于URL的"_doc"其實是可以省略不寫的,我此處是一個習慣性操作,表示是對文檔的操作;(2)請求體最后最后一行一定要有一個換行符;(3)刪除數據的結果查看響應體的"result"字段,如果為"not_found",則說明數據未刪除,因為沒有找到該文檔;

5.一次性批處理多少性能最高

	ES提供了Bulk API支持批量操作,當我們有大量的寫任務時,可以使用Bulk來進行批量寫入。對于批量操作,我們一次性批量多少操作性能最高呢?我們不得不參考以下幾點:(1)整個批量請求需要被加載到接收我們請求節點的內存里,所以請求越大,給其它請求可用的內存就越小。有一個最佳的bulk請求大小。超過這個大小,性能不能提升而且可能降低;(2)最佳大小,當然并不是一個固定的數字,它完全取決于你的硬件,你文檔的大小和復雜度以及索引和搜索的負載;(3)幸運的是,這個最佳點(sweetspot)還是容易找到的,試著批量索引標準的文檔,隨著大小的增長,當性能開始降低,說明你批次的大小太大了。開始的數量可以在1000-5000個文檔之間,如果你的文檔非常大,可以使用較小的批次;(4)通常著眼于你請求批次的物理大小是非常有用的,1000個1KB的文檔和1000個1MB的文檔大不相同,一個好的批次最好保持在5~15MB逐漸增加,當性能沒有提示時,把這個數據量作為最大值;(5)bulk默認設置批量提交的數據量不能超過100M;

六.其它查詢操作

1.ElasticSearch中支持的類型(了解即可)

	前面我們創建的索引以及插入數據,都是由Elasticsearch進行自動判斷。有些時候我們需要進行明確的字段類型的,否則,自動判斷的類型和實際需求是不相符的。此處我針對字符串類型做一個簡單的說明:(因為上面的案例的確用到了)string類型(deprecated,已廢棄):在ElasticSearch舊版本中使用較多,從ElasticSearch 5.x開始不再支持string,由text和keyword類型代替。text類型:當一個字段要被全文搜索的,比如Email內容,產品描述,應該使用text類型。設置text類型以后,字段內容會被分析,在生成倒排索引以前,字符串會被分詞器分成一個一個詞項。text類型的字段不用于排序,很少用于聚合。換句話說,text類型是可拆分的。keyword類型:適用于索引結構化的字段,比如email地址,主機名,狀態碼,標簽,IP地址等。如果字段需要進行過濾(比如查找已發布博客中status屬性為published的文章),排序,聚合。keyword類型的字段只能通過精確值搜索到。換句話說,keyword類型是不可拆分的。關于ElasticSearch的詳細的數據類型并不是我們運維人員所關心的,因為這些是開發人員去研究的,感興趣的小伙伴卡自行參考官方文檔。推薦閱讀:https://www.elastic.co/guide/en/elasticsearch/reference/7.12/mapping-types.html

2.映射關系

推薦閱讀:https://www.elastic.co/guide/en/elasticsearch/reference/7.12/mapping.html創建索引:curl -X PUT http://elk101.oldboyedu.com:9200/teacher{"settings": {"index": {"number_of_replicas": "1","number_of_shards": "5"}}}添加索引的映射關系:curl -X PUT http://elk101.oldboyedu.com:9200/teacher/_mapping{"properties":{"name":{"type":"text", // 該類型是文本類型,該類型存儲的數據是可以被拆分的。"index":true},"gender":{"type":"keyword",  // 該類型是關鍵字類型,該類型存儲的數據是不可被拆分的"index":true},"telephone":{"type":"text","index":false  // 如果字段的"index"為false,則無法使用該字段進行數據查找!},"address":{"type":"keyword","index":false}}}往索引中添加數據:curl -X PUT http://elk101.oldboyedu.com:9200/teacher/_create/10001{"name":"oldboy","gender":"男性的","telephone":"1024","address":"北京沙河"}測試各個映射字段是否可以查詢數據:curl -X GET http://elk101.oldboyedu.com:9200/teacher/_search(1)基于"name"字段可以查詢到數據:{"query":{"match":{"name":"oldboy"}}}(2)基于"gender"字段可以查詢到數據:{"query":{"match":{"gender":"男性的"  // 注意,此處必須完全匹配,如果不完全匹配則查詢不到數據喲~因為"gender"字段被我們顯式定義為"keyword"類型啦~}}}(3)基于"telephone"字段無法查詢到數據:{"query":{"match":{"telephone":1024}}}(4)基于"address"字段無法查詢到數據:{"query":{"match":{"address":"北京沙河"}}}

七.管理集群常用的API

1.查看集群的健康狀態信息

curl -X GET  http://elk101.k8s.com:9200/_cluster/health?wait_for_status=yellow&timeout=50s&pretty溫馨提示:(1)wait_for_status表示等待ES集群達到狀態的級別;(2)timeout表示指定等待的超時時間;(3)pretty表示美觀的輸出響應體,尤其是在瀏覽器輸入;以下是對響應結果進行簡單的說明:cluster_name集群的名稱。status集群的運行狀況,基于其主要和副本分片的狀態。常見的狀態為:green:所有分片均已分配。yellow:所有主分片均已分配,但未分配一個或多個副本分片。如果群集中的節點發生故障,則在修復該節點之前,某些數據可能不可用。red:未分配一個或多個主分片,因此某些數據不可用。在集群啟動期間,這可能會短暫發生,因為已分配了主要分片。timed_out:如果false響應在timeout參數指定的時間段內返回(30s默認情況下)。number_of_nodes:集群中的節點數。number_of_data_nodes:作為專用數據節點的節點數。active_primary_shards:活動主分區的數量。active_shards:活動主分區和副本分區的總數。relocating_shards:正在重定位的分片的數量。initializing_shards:正在初始化的分片數。unassigned_shards:未分配的分片數。delayed_unassigned_shards:其分配因超時設置而延遲的分片數。number_of_pending_tasks:尚未執行的集群級別更改的數量。number_of_in_flight_fetch:未完成的訪存次數。task_max_waiting_in_queue_millis:自最早的初始化任務等待執行以來的時間(以毫秒為單位)。active_shards_percent_as_number:群集中活動碎片的比率,以百分比表示。

2.獲取集群的配置信息(了解即可)

查看集群的信息:curl -X GET  http://elk101.k8s.com:9200/_cluster/settings?include_defaults修改集群的信息:curl -X PUT http://elk101.k8s.com:9200/_cluster/settings{ "persistent": { "cluster.routing.allocation.enable": "none"}}溫馨提示:(1)默認情況下,此API調用僅返回已顯式定義的設置,包括"persistent"(持久設置)和"transient"(臨時設置);(2)其中include_defaults表示的是默認設置;

3.查看集群的統計信息(了解即可)

curl -X GET https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html返回參數說明:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html

4.查看集群shard分配的分配情況(了解即可)

curl -X PUT  http://elk101.k8s.com:9200/_cluster/allocation/explain提交的參數如下:(1)查看未分配的主分片原因{"index": "linux-2020-10-3","shard": 0,"primary": true}(2)查看未分配的副本分片原因{"index": "linux-2020-10-3","shard": 0,"primary": false}返回的參數說明:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-allocation-explain.html溫馨提示:當您試圖診斷shard未分配的原因或碎片為什么在您可能期望的情況下繼續留在當前節點時,此API非常有用。

5.其他操作(了解即可)

推薦閱讀:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92397.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92397.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92397.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

當文檔包含表格時,如何結合大模型和OCR提取數據?

在AI應用極速發展的當下,LLM(大語言模型)與RAG(檢索增強生成)系統已成為構建智能問答、知識管理等高階應用的核心引擎。 然而,許多團隊在項目落地時遭遇了現實的挑戰:模型的實際表現——無論是回…

機器學習工程化 3.0:從“實驗科學”到“持續交付”的 7 個關卡

一、背景:為什么 90% 的 ML 項目死在了實驗臺? Gartner 2024 報告顯示,87% 的企業機器學習項目未能走出實驗室。原因并非算法落后,而是缺少“工程化骨骼”:數據漂移無人發現,模型上線一周就失效&#xff1b…

BGP筆記整理

一、BGP 基礎概念1. 產生背景BGP(Border Gateway Protocol)是自治系統(AS)間的動態路由協議,屬于外部網關協議(EGP),用于在不同 AS 之間傳遞路由信息。2. 自治系統(AS&am…

Mysql-MVCC機制

1. MVCC機制詳解 在Read Uncommitted級別下,事務總是讀取到最新的數據,因此根本用不到歷史版本,所以MVCC不在該級別下工作。 在Serializable級別下,事務總是順序執行。寫會加寫鎖,讀會加讀鎖,完全用不到MVC…

MySQL面試題及詳細答案 155道(061-080)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

大數據中需要知道的監控頁面端口號都有哪些

以下是一些大數據中常見組件監控頁面的端口號:1. Hadoop:HDFS Web UI在Hadoop2.x版本中默認端口為50070,在Hadoop3.x版本中為9870,用于查看集群文件及目錄;YARN Web UI端口為8088,可查看MR執行情況&…

時隔六年!OpenAI 首發 GPT-OSS 120B / 20B 開源模型:性能、安全與授權細節全解

為什么這次開放值得關注? OpenAI 時隔六年再次“放權重”,一次性公布 gpt-oss-120b 與 gpt-oss-20b 兩個尺寸,并允許商業化二次開發 —— 采用 Apache 2.0 許可且可直接在 Hugging Face 下載(WIRED)。官方表示,開放旨在 降低門檻…

漏洞全講解之中間件與框架漏洞(數字基礎設施的“阿喀琉斯之踵“)

一、中間件漏洞的嚴峻現狀根據Synopsys《2023年開源安全報告》顯示:企業應用中平均包含158個中間件依賴高危漏洞年增長率達62%(X-Force數據)最危險漏洞:Log4j2(CVE-2021-44228)影響全球83%企業平均修復延遲…

Leetcode——菜鳥筆記2(移動0)

文章目錄題目解題題目 解題 /*nums【0&#xff0c;1&#xff0c;0&#xff0c;3&#xff0c;2】numsSize5 nums【1.3.2.0.0】 1.找非零數&#xff0c;依次放在前面 2.剩下補0 */ void moveZeroes(int* nums, int numsSize) {int count0 0;int temp 0;for (int i 0; i < …

【LINUX網絡】應用層自定義協議與序列化——通過實現一個簡單的網絡計算器來體會自定義協議

在了解了各種協議的使用以及簡單的socket接口后&#xff0c;學會了“怎么傳”的問題&#xff0c;現在來了解一下“傳什么”的問題。 1. 序列化與反序列化 在前面的TCP、UDP的socket api 的接口, 在讀寫數據時, 都是按 "字符串" 的方式來發送接收的. 如果我們要傳輸一…

電腦一鍵重裝系統win7/win10/win11無需U盤(無任何捆綁軟件圖文教程)

建議還是使用U盤進行重裝系統&#xff0c;如果暫時還不會沒有U盤&#xff0c;那就按照我這個來吧。 一&#xff0c;工具下載&#xff1a; 一鍵重裝工具 密碼:g5p3 二&#xff0c;鏡像下載: 鏡像站點&#xff1a;MSDN, 我告訴你 - 做一個安靜的工具站 可以下載需要重裝的系統…

深入探索Supervision庫:Python中的AI視覺助手

深入探索Supervision庫&#xff1a;Python中的AI視覺助手 在計算機視覺和機器學習領域&#xff0c;數據處理和結果可視化是項目成功的關鍵環節。今天我們將深入探討一個強大的Python庫——Supervision&#xff0c;它專為簡化AI視覺項目的工作流程而設計。 什么是Supervision&am…

面向對象之類、繼承和多態

系統是由匯總了數據和過程的“對象”組成的。在面向對象中&#xff0c;軟件被定義為“類”&#xff0c;然后創建“實例”并運行。系統是通過“實例”之間的互相交換“消息”而運行的&#xff0c;但由于進行了“封裝”&#xff0c;所以無法查看內部的詳細內容&#xff0c;這被稱…

傳統防火墻與下一代防火墻

防火墻的發展過程第一種簡單包過濾防火墻工作于&#xff1a;3、4層實現了對于IP、UDP、TCP信息的一些檢查優點&#xff1a;速度快、性能高、可用硬件實現&#xff1b;兼容性較好檢查IP、UDP、TCP信息缺點&#xff1a;安全性有限&#xff1a;僅能基于數據包的表面層面進行審查&a…

計算機視覺前言-----OpenCV庫介紹與計算機視覺入門準備

前言&#xff1a;OpenCV庫介紹與計算機視覺入門 OpenCV概述 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和機器學習軟件庫&#xff0c;由Intel于1999年首次發布&#xff0c;現由非盈利組織OpenCV.org維護。它包含了超過2500種…

AI面試系統助手深度評測:6大主流工具對比分析

導語&#xff1a;秋招季&#xff0c;企業如何破局高效招聘&#xff1f;隨著2024年秋招季臨近&#xff0c;企業招聘壓力陡增。據牛客調研數據顯示&#xff0c;74.2%的求職者已接觸過AI面試&#xff0c;89.2%的企業認為AI顯著提升了篩選效率。然而&#xff0c;面對市場上琳瑯滿目…

浮雕軟件Artcam安裝包百度云網盤下載與安裝指南

如你所知&#xff0c;ArtCAM是一款專業的CAD/CAM軟件工具&#xff0c;主要用于三維浮雕設計、珠寶加工及CNC數控雕刻&#xff0c;可將二維構思快速轉化為三維藝術產品&#xff0c;深受使用者的喜愛。一、主要應用領域?工藝品與制造業?&#xff1a;木工雕花、標牌制作、模具制…

六邊形架構模式深度解析

在分布式系統設計領域&#xff0c;六邊形架構&#xff08;Hexagonal Architecture&#xff0c;又稱端口與適配器模式&#xff09;作為一種以領域為中心的架構模式&#xff0c;通過明確分離核心業務邏輯與外部交互&#xff0c;有效提升系統的可測試性、可擴展性與可維護性。本文…

Beelzebub靶機

一、主機發現 arp-scan掃描一下局域網靶機 二、信息收集 nmap -sV -A -T4 -p- 192.168.31.132 22端口ssh服務和80端口web服務是打開的 目錄掃描 三、滲透測試 訪問一下web服務是個apache的首頁 web頁面分析 有一個很奇怪的地方&#xff0c;index.php明明是一個200的響應&a…

目前常用于視頻會議的視頻編碼上行/下行帶寬對比

視頻編碼上行/下行帶寬對比H.264、VP8和VP9在不同終端數量下的上行與下行帶寬需求差異&#xff08;單位&#xff1a;Mbps&#xff09;編碼效率說明H.264基準編碼標準&#xff0c;上行和下行帶寬需求相對較高&#xff0c;硬件兼容性最佳VP8開源編碼&#xff0c;上行和下行帶寬均…