elasticsearch6.7 01.入門指南(2)

来源:https://www.cnblogs.com/wtc1994/archive/2019/04/14/10703030.html
-Advertisement-
Play Games

[TOC] 2、安裝(略) 預設情況下,elasticsearch 使用埠 9200 來訪問它的 REST API。如果有必要,該埠也可以配置 3、探索集群 3.1 The REST API 既然我們已經啟動並且運行了我們的節點(和集群),下一步是去瞭解如何與它通信。幸運的是,elasticse ...


2、安裝(略)

預設情況下,elasticsearch 使用埠 9200 來訪問它的 REST API。如果有必要,該埠也可以配置

3、探索集群

3.1 The REST API

既然我們已經啟動並且運行了我們的節點(和集群),下一步是去瞭解如何與它通信。幸運的是,elasticsearch 提供了一個非常全面且強大的 REST API,您可以使用它來與集群進行交互。可以使用 API 來完成如下的幾件事情 :

  • 檢查集群,節點,和索引的健康,狀態和統計信息。
  • 管理集群,節點和索引數據以及元數據。
  • 針對索引執行 CRUD(Create,Read,Update,和 Delete)和搜索操作。
  • 執行高級搜索,例如 paging,sorting,filtering,scripting,aggregations 等等。

3.2. Cluster Health(集群健康)

讓我們從基本的健康檢查開始,我們可以用它來看看我們的集群在做什麼。我們將使用 curl 來做這件事情,當然您也可以使用任何允許您進行 HTTP/REST 調用的工具。假設我們在同一節點上啟動了 elasticsearch 並且打開了另一個命令 shell 視窗。 為了檢查集群健康,我們將使用 _cat API。您可以在 Kibana的控制臺中通過點擊 “VIEW IN CONSOLE” 或者通過點擊下麵的 “COPY AS CURL” 鏈接然後粘貼到終端中使用 curl 中運行該命令 :

#shell視窗
curl -XGET 'localhost:9200/_cat/health?v&pretty'

#kibana中
GET /_cat/indices?v

響應如下 :

epoch      timestamp   cluster      status node.total node.data shards pri relo init
1475247709 17:01:49    elasticsearch green      1          1      0     0    0    0 
unassign pending_tasks max_task_wait_time active_shards_percent
    0         0                 -               100%

我們可以看到名為 “elasticsearch” 的集群處於綠色狀態。

每當我們請求集群健康時,我們得到的集群狀態分為綠色、黃色,和紅色。

  • 綠色表示一切正常(集群功能齊全)
  • 黃色表示所有數據可用,但是有些副本尚未分配(集群功能齊全)
  • 紅色意味著由於某些原因有些數據不可用(可以使用集群的部分功能)

註意,集群是紅色時,它仍然具有部分功能(例如,它將繼續從可用的分片中提供搜索服務),但是您應該儘快去修複它,因為您已經丟失數據了。

另外,從上面的響應中,我們可以看到共計 1 個 node(節點)和 0 個 shard(分片),因為我們還沒有在其中放入數據。請註意,由於我們使用的是預設的集群名稱(elasticsearch),並且 elasticsearch 預設情況下使用單播網路來發現同一機器上的其它節點。有可能您不小心在您的電腦上啟動了多個節點,預設情況下它們都會加入該群集。在這種情況下,你會在上面的響應中看到多個節點。

我們也可以獲取集群的節點列表,如下所示 :

curl -XGET 'localhost:9200/_cat/nodes?v'

#kibana中
GET /_cat/nodes?v

響應如下 :

ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1           10           5   5    4.46                       mdi      *      PB2SGZY

在這裡,我們可以到命名為 “PB2SGZY ” 的節點名,這是目前在我們集群中的唯一節點。

3.3 List All Indices(查看所有索引)

現在,讓我們來查看下所有的索引 :

curl -XGET 'localhost:9200/_cat/indices?v'

GET /_cat/indices?v

響應如下 :

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

沒有具體的值,這意味著elasticsearch集群中還沒有索引。

3.4 Create an Index(創建索引)

現在我們創建一個名為 “customer” 的索引,然後再列出所有索引 :

curl -XPUT 'localhost:9200/customer?pretty&pretty'
curl -XGET 'localhost:9200/_cat/indices?v&pretty'

#kibana中
PUT /customer?pretty
GET /_cat/indices?v

這是第一個使用PUT動作命令創建名為 customer 的索引。只需在調用的末尾附加pretty命令就可以可視化地列印JSON響應(如果有的話)
響應如下 :

health status index     uuid   pri rep docs.count docs.deleted store.size pri.store.size
yellow  open   customer 95SQ4   5   1       0          0           260b        260b

第二個命令的結果告訴我們現在已經有 1 個名為customer的索引,並且它有 5 個主分片和 1 個副本(預設值)以及0個文檔。

您可能也註意到customer索引中有一個yellow健康標記。回想下我們先前的討論, yellow 意味著有些副本還沒有被分配。該索引發生這種情況的原因,是因為預設情況下elasticsearch為此索引創建了一個副本。因為目前只有一個節點在運行,所以在另一個節點加入集群之前,還不能分配一個副本(為了高可用性)。一旦該副本分配到第二個節點上,該索引的運行狀況將變為綠色。

3.5 索引和查詢文檔

現在讓我們放入一些東西動我們的 customer 索引中去。讓我們在 customer 索引中index一個ID為1的客戶文檔,如下所示:

curl -XPUT 'localhost:9200/customer/_doc/1?pretty&pretty' -d'
{
  "name": "John Doe"
}'

PUT /customer/_doc/1?pretty
{
    "name":"John Doe"
}

響應如下 :

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

從上面我們可以看到在客戶索引中成功地創建了一個新的客戶文檔。該文檔還有一個為1的內部 ID,它是我們在索引時指定的。

需要註意的是,您無需在索引文檔之前先顯式地創建索引。在前面的例子中,如果customer 索引事先不存在,Elasticsearch 將自動的創建 customer 索引。

現在讓我們檢索我們剛剛索引的文檔 :

curl -XGET 'localhost:9200/customer/_doc/1?pretty&pretty'

GET /customer/_doc/1?pretty

響應如下 :

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 25,
  "_primary_term" : 1,
  "found" : true,
  "_source" : { "name": "John Doe" }
}

除了一個欄位found之外,上面沒有什麼特別的東西。結果說明我們找到了一個ID為1的文檔,其中欄位_source返回了我們從上一步索引的完整JSON文檔。

3.6 Delete an Index(刪除索引)

現在讓我們刪除剛纔創建的索引並且再次列出所有索引 :

curl -XDELETE 'localhost:9200/customer?pretty&pretty'
curl -XGET 'localhost:9200/_cat/indices?v&pretty'

DELETE /customer?pretty
GET /_cat/indices?v

響應如下 :

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

這意味著索引被成功的刪除,並且我們現在又回到了集群沒有索引的初始狀態了。

在我們繼續之前,讓我們仔細的看一看一些我們迄今為止學習的 API 命令 :

PUT /customer
PUT /customer/_doc/1
{
  "name": "John Doe"
}
GET /customer/_doc/1
DELETE /customer

如果我們仔細的研究上面的命令,我們可以清楚的看到,我們如何訪問 Elasticsearch 中的數據的 pattern(模式)。該 pattern(模式)可以概括如下 :

<HTTP Verb> /<Index>/<Type>/<ID>

這種REST訪問模式在所有API命令中都是非常普遍的,如果您可以簡單的記住它,對您掌握 Elasticsearch 會有一個良好的開端。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 歡迎大家的持續關註。上一次,我們結合第一篇推導出來的類圖,到第二篇根據類圖進行實際代碼的編寫,對裝飾者模式有了一個整體的概念以及實戰。不知道對你幫助如何呢?小編已經有門道了,看完接下來的一部分,你會恍然大悟,原來實際編碼中你一直在用裝飾者模式。 真實世界的裝飾者:Java I/O 看到標題,是不是就 ...
  • 公司說我們的開發方式是敏捷開發,實際上只是使用了一些敏捷開發的方法,只有遵守敏捷開發的價值觀和原則,才能算是敏捷開發。微服務也是一樣,不是說拆分成多個服務去部署,就叫做微服務。也不是採用市面上常用的微服務框架,就是微服務了。 上面這段話是我對微服務的簡單理解。 隨著公司業務的發展,部門領導要求其中一 ...
  • [TOC] LWC知識整理(一) 最近Salesforce那群閑不住的研究員又推出了一款針基於Web的開發組件 Lighting Web Component(簡稱 LWC ),這個組件的推出將對Salesforce開發進行一次比較大的更新換代(沒錯,你之前拼命學的Aura要逐漸淡出Salesforc ...
  • [TOC] 2、GET API get API 可以通過文檔id從索引中獲取json格式的文檔,以下示例從 索引中獲取 為`_doc`,id值為0為的JSON文檔: 返回結果: 上述返回結果包含文檔的_index, _type, _id 和_version 欄位。如果 欄位為 , 就會返回 欄位,即 ...
  • 1. 構造猜數字核心函數 2. 構造用戶外殼函數 3. 構造輸入判斷函數 4. 調用執行 ...
  • 一般使用$_FILES來進行文件上傳時,可以使用$_FILES["file"]["error"]來判斷文件上傳是否出錯。$_FILES["file"]["error"]會返回相應的錯誤代碼: UPLOAD_ERR_OK 其值為 0,沒有錯誤發生,文件上傳成功。 UPLOAD_ERR_INI_SIZE ...
  • 一些鬥魚TV Web API [Some DouyuTv API] 寫在最前 去年TI5前開發了dotaonly.com,網站需要用到各個直播平臺API。不像國外網站Twitch那樣開放,都有現成的API可用,國內網站都很封閉,對開發者不太友好。本文所涉及API皆抓取自鬥魚IOS手機客戶端。 首先是 ...
  • [TOC] 4、Modifying Your Data(修改數據) Elasticsearch 提供了近實時的操縱數據和搜索的能力。 預設情況下,從索引/更新/刪除數據到在搜索結果中顯示數據會有 1 秒的延遲(刷新間隔)。 這是與其他平臺(如SQL) 的一個重要區別,在SQL中,數據在事務完成後立即 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...