關閉某一個索引: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
使用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方法喲~
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":{}}}}
推薦閱讀: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非常有用。
以下是一些大數據中常見組件監控頁面的端口號:1. Hadoop:HDFS Web UI在Hadoop2.x版本中默認端口為50070,在Hadoop3.x版本中為9870,用于查看集群文件及目錄;YARN Web UI端口為8088,可查看MR執行情況&…