如何安裝與設置Elasticsearch APIhtml
到目前爲止,在本系列文章中,我一直在撰寫有關Elasticsearch和Elastic堆棧組件的通常知識。
系列文章列表
01.ElasticSearch能作什麼?
02.Elastic Stack功能介紹
03.如何安裝與設置Elasticsearch APIjava
若是想找更實操的操做手冊,我推薦你看這篇從小白到大師成長_ElasticSearch入門教程_web
從本文開始,咱們將開始深刻研究Elasticsearch API。在本文中,咱們將主要側重於Elasticsearch的安裝,而後學習如何使用Elasticsearch提供的基本CRUD API。咱們還將安裝一個名爲elasticsearch-head的第三方應用程序,以查看UI中的更改。
1.安裝Elasticsearch
首先,讓咱們首先在系統中安裝和配置Elasticsearch。在本教程中,我將Ubuntu 16.04用做具備8GB RAM的計算機上的操做系統。數據庫
1.1 Java安裝
正如咱們在以前的博客中所看到的那樣,Elasticsearch是創建在名爲Lucene的庫之上的,而Lucene又是創建在Java之上的。所以,Java是安裝Elasticsearch的先決條件。如下是在計算機中安裝Java的步驟:
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer
1.2 Elasticsearch安裝
讓咱們看看如何在此處將Elasticsearch做爲服務安裝。oracle
sudo dpkg -i elasticsearch-5.6.3.debcors
完成上述安裝後,鍵入
sudo service elasticsearch startcurl
以啓動服務。
這將在您的本地環境中做爲服務安裝並啓動elasticsearch。
elasticsearch運行的默認端口是9200。要檢查它是否正在運行,只需在終端中鍵入如下命令:
curl localhost:9200jvm
上面的命令將致使以下所示的響應:elasticsearch
{ 「name」 : 「9CCT_A1」, 「cluster_name」 : 「elasticsearch」, 「cluster_uuid」 : 「QqZcNgcdRDW8sWMaLNf-Jg」, 「version」 : { 「number」 : 「5.6.3」, 「build_hash」 : 「1a2f265」, 「build_date」 : 「2017–10–06T20: 33: 39.012Z」, 「build_snapshot」 : false, 「lucene_version」 : 「6.6.1」 }, 「tagline」 : 「YouKnow, forSearch」 }
1.3配置文件
在Elasticsearch世界中最重要的事情之一就是正確配置它。咱們應該熟悉Elasticsearch中兩個重要的配置文件。這些是 :
1.3b elasticsearch.yml
此配置文件容許使用許多配置選項,例如更改elasticsearch的端口,定義集羣中的節點,解決cors問題等。
該配置文件的位置在文件夾「 etc / elasticsearch」下。在這裏,您能夠看到elasticsearch.yml文件。學習
1.3b jvm.options.yml
yml文件中的配置包含在5.x以前版本的elasticsearch.yml中。此處的配置負責Java虛擬機內存管理。此配置文件的位置也位於
etc/elasticsearch
。咱們將在之後的博客中詳細介紹這一點。
至此,咱們已經成功在系統中安裝了elasticsearch。如今讓咱們熟悉Elasticsearch中的基本數據存儲模型。正如咱們在以前的博客中提到的那樣,Elasticsearch是一個NoSql數據庫。
所以,在這裏,代替SQL世界中的數據庫,表,行是希拉基,最接近的希拉基類比是索引,類型和文檔。這意味着,當文檔(應爲JSON格式)保存在Elasticsearch中時,其地址看起來像
index name:這相似於SQL world中的數據庫名稱。這是必不可少的信息。Elasticsearch可能包含許多索引,而且要存儲的文檔應提供失敗的索引名稱,這將致使錯誤,由於Elasticsearch沒法肯定文檔屬於哪一個索引。此外,索引名稱不支持大寫和某些特殊字符。
type name:Elasticsearch中的類型相似於SQL世界中數據庫下的表。所以,索引下能夠有多個表。表格下能夠有多個文檔。若是咱們沒有給文檔提供類型名稱,elasticsearch仍將使用默認類型名稱進行索引。
document ID:文檔的惟一ID。能夠由將文檔放到Elasticsearch的用戶提供,或者若是沒有提供,Elasticsearch會自動生成一個惟一值。
注意:「索引名稱+類型名稱+文檔ID」的組合對於elasticsearch中的每一個文檔都是惟一的
下圖顯示了具備多個索引的典型elasticsearch數據庫的外觀。
3 CRUD操做-命令行
如今,咱們對Elasticsearch中的數據混亂有了一個基本的想法。在本節中,讓咱們使用命令行界面在Elasticsearch中執行一些基本的CRUD操做。
3.1建立索引
從上一節中咱們知道,要將文檔存儲在Elasticsearch中,咱們須要指定索引名稱。所以,重要的是在存儲任何此類文檔以前建立索引。讓咱們
test_index_01
從終端建立一個名爲「 」 的索引,以下所示:
curl -XPUT localhost:9200/test_name_01
上面的命令將產生以下所示的響應:
{ 「acknowledged」: true, 「shards_acknowledged」: true, 「index」: 」test_index_01" }
3.2創建文件
如今咱們已經建立了索引,咱們能夠將文檔索引到elasticsearch。
在這種狀況下,咱們將爲文檔ID等於1的文檔創建索引(存儲)。能夠按照如下步驟進行操做:
curl -XPUT localhost:9200/test_index_01/test_type_01/1 -d ‘{ 「name」: 」ArunMohan」, 「age」: 32 }’
在上述請求中,如下是咱們傳遞給elasticsearch的數據的分割信息
indexname: test_index_01 type_name: test_type_01 documentid: 1 document : { 「name」: 「ArunMohan」, 「age」: 32 }
以上請求將致使以下響應:
{ _index: test_index_01, _type: test_type_01, _id: 1, _version: 1, result: created, _shards: { total: 2, successful: 1, failed: 0 }, created: true }
在響應中,咱們再次能夠看到索引名稱(「 index」),類型名稱(「 _type」),文檔ID(「 id」)。還將操做狀態做爲「已建立」值。「 created」的值是true,表示文檔索引成功。
3.3閱讀文件
可使用帶有索引名稱,類型名稱和其中指定的文檔ID的GET請求從elasticsearch中檢索文檔。這充當該文檔的準確地址(前提是所傳遞的全部三個信息都是準確的),Elasticsearch將爲咱們獲取該文檔。讓咱們看看如何檢索剛剛索引的文檔。
curl -XGET localhost:9200/test_index_01/test_type_01/1
上面的請求將返回以下響應:
{ _index: test_index_01, _type: test_type_01, _id: 1, _version: 1, found: true, _source: { name: ArunMohan, age: 32 } }
在以上響應中,咱們能夠看到文檔位於響應的「 _source」對象下。元數據包括其餘信息和檢索狀態爲「已找到」。
3.4更新文件
若是須要更新已經創建索引的文檔的字段怎麼辦?Elasticsearch爲咱們提供了此操做的更新API。在咱們的示例中,假設我要使用新值31更新年齡字段。對此的請求以下所示:
curl -XPOST localhost:9200/test_index_01/test_type_01/1/_update -d '{"doc":{"age":31}}'
您可能已經注意到,我在請求中僅給出了必填字段和該字段的新值({「 age」:31})。在名爲「 doc」的對象下也是如此。該請求還包含有關要更新的文檔的全部信息(索引名稱,類型名稱和文檔ID),以便Elasticsearch能夠找到該文檔並對該特定字段進行更改(這不是它的確切工做方式,而是目前,咱們正在深潛)。如今,若是文檔中不存在這樣的字段,Elasticsearch將在文檔中建立一個這樣的字段。
對於以上請求,咱們將得到如下響應:
{ "_index": "test_index_01", "_type": "test_type_01", "_id": "1", "_version": 2, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 } }
在以上響應的結果字段中,咱們能夠看到狀態爲「已更新」,代表更新成功。
3.5刪除文件
刪除相似於前面提到的內容。只需提供索引名稱,類型名稱和要刪除的文檔以及請求的文檔ID,便可將其刪除,以下所示:
curl -XDELETE localhost:9200/test_index_01/test_type_01/1
這將使咱們獲得以下響應:
{ "found": true, "_index": "test_index_01", "_type": "test_type_01", "_id": "1", "_version": 3, "result": "deleted", "_shards": { "total": 2, "successful": 1, "failed": 0 } }
結論在本文中,咱們已經看到了Elasticsearch的安裝,而後是其上的基本CRUD操做。在本系列的下一個博客中,咱們將看到如何在同一系統上使用多個elasticsearch實例。