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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...