我的Elasticsearch系列文章冶匹,逐漸更新中厚宰,歡迎關(guān)注
0A.關(guān)于Elasticsearch及實(shí)例應(yīng)用
03.如何安裝與設(shè)置Elasticsearch API
04.如果通過elasticsearch的head插件建立索引_CRUD操作
05.Elasticsearch多個(gè)實(shí)例和head plugin使用介紹
06.當(dāng)Elasticsearch進(jìn)行文檔索引時(shí)爽彤,它是怎樣工作的剩胁?
07.Elasticsearch中的映射方式—簡(jiǎn)潔版教程
08.Elasticsearch中的分析和分析器應(yīng)用方式
到目前為止擒权,在本系列文章中袱巨,我一直在撰寫有關(guān)Elasticsearch和Elastic堆棧組件的一般知識(shí)。
如果想找更實(shí)操的操作手冊(cè)碳抄,我推薦你看這篇從小白到大師成長(zhǎng)ElasticSearch入門教程
從本文開始愉老,我們將開始深入研究Elasticsearch API。在本文中剖效,我們將主要側(cè)重于Elasticsearch的安裝嫉入,然后學(xué)習(xí)如何使用Elasticsearch提供的基本CRUD API焰盗。我們還將安裝一個(gè)名為elasticsearch-head的第三方應(yīng)用程序,以查看UI中的更改咒林。
1.安裝Elasticsearch
首先熬拒,讓我們首先在系統(tǒng)中安裝和配置Elasticsearch。在本教程中映九,我將Ubuntu 16.04用作具有8GB RAM的計(jì)算機(jī)上的操作系統(tǒng)梦湘。
1.1 Java安裝
正如我們?cè)谥暗牟┛椭兴吹降哪菢樱珽lasticsearch是建立在名為L(zhǎng)ucene的庫(kù)之上的件甥,而Lucene又是建立在Java之上的捌议。因此,Java是安裝Elasticsearch的先決條件引有。以下是在計(jì)算機(jī)中安裝Java的步驟:
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer
1.2 Elasticsearch安裝
讓我們看看如何在此處將Elasticsearch作為服務(wù)安裝瓣颅。
在此處下載最新版本的Elasticsearch
輸入?
sudo dpkg -i elasticsearch-5.6.3.deb
完成上述安裝后,鍵入
sudo service elasticsearch start
以啟動(dòng)服務(wù)譬正。
這將在您的本地環(huán)境中作為服務(wù)安裝并啟動(dòng)elasticsearch宫补。
elasticsearch運(yùn)行的默認(rèn)端口是9200。要檢查它是否正在運(yùn)行曾我,只需在終端中鍵入以下命令:
curl localhost:9200
上面的命令將導(dǎo)致如下所示的響應(yīng):
{
? “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,
? ? “l(fā)ucene_version” : “6.6.1”
? },
? “tagline” : “YouKnow,
? forSearch”
}
1.3配置文件
在Elasticsearch世界中最重要的事情之一就是正確配置它粉怕。我們應(yīng)該熟悉Elasticsearch中兩個(gè)重要的配置文件。這些是 :
1.3b elasticsearch.yml
此配置文件允許使用許多配置選項(xiàng)抒巢,例如更改elasticsearch的端口贫贝,定義集群中的節(jié)點(diǎn),解決cors問題等蛉谜。
該配置文件的位置在文件夾“ etc / elasticsearch”下稚晚。在這里,您可以看到elasticsearch.yml文件型诚。
1.3b jvm.options.yml
yml文件中的配置包含在5.x之前版本的elasticsearch.yml中客燕。此處的配置負(fù)責(zé)Java虛擬機(jī)內(nèi)存管理。此配置文件的位置也位于
etc/elasticsearch
狰贯。我們將在以后的博客中詳細(xì)介紹這一點(diǎn)也搓。
2. Elasticsearch中的索引,類型和文檔
至此暮现,我們已經(jīng)成功在系統(tǒng)中安裝了elasticsearch』够妫現(xiàn)在讓我們熟悉Elasticsearch中的基本數(shù)據(jù)存儲(chǔ)模型。正如我們?cè)谥暗牟┛椭刑岬降哪菢悠艽珽lasticsearch是一個(gè)NoSql數(shù)據(jù)庫(kù)拍顷。
因此,在這里塘幅,代替SQL世界中的數(shù)據(jù)庫(kù)昔案,表尿贫,行是希拉基,最接近的希拉基類比是索引踏揣,類型和文檔庆亡。這意味著,當(dāng)文檔(應(yīng)為JSON格式)保存在Elasticsearch中時(shí)捞稿,其地址看起來像
index name:這類似于SQL world中的數(shù)據(jù)庫(kù)名稱又谋。這是必不可少的信息。Elasticsearch可能包含許多索引娱局,并且要存儲(chǔ)的文檔應(yīng)提供失敗的索引名稱彰亥,這將導(dǎo)致錯(cuò)誤,因?yàn)镋lasticsearch無法確定文檔屬于哪個(gè)索引衰齐。此外任斋,索引名稱不支持大寫和某些特殊字符。
type name:Elasticsearch中的類型類似于SQL世界中數(shù)據(jù)庫(kù)下的表耻涛。因此废酷,索引下可以有多個(gè)表。表格下可以有多個(gè)文檔抹缕。如果我們沒有給文檔提供類型名稱澈蟆,elasticsearch仍將使用默認(rèn)類型名稱進(jìn)行索引。
document ID:文檔的唯一ID卓研》峤椋可以由將文檔放到Elasticsearch的用戶提供,或者如果沒有提供鉴分,Elasticsearch會(huì)自動(dòng)生成一個(gè)唯一值。
注意:“索引名稱+類型名稱+文檔ID”的組合對(duì)于elasticsearch中的每個(gè)文檔都是唯一的
下圖顯示了具有多個(gè)索引的典型elasticsearch數(shù)據(jù)庫(kù)的外觀带膀。
3 CRUD操作-命令行
現(xiàn)在志珍,我們對(duì)Elasticsearch中的數(shù)據(jù)混亂有了一個(gè)基本的想法。在本節(jié)中垛叨,讓我們使用命令行界面在Elasticsearch中執(zhí)行一些基本的CRUD操作伦糯。
3.1創(chuàng)建索引
從上一節(jié)中我們知道,要將文檔存儲(chǔ)在Elasticsearch中嗽元,我們需要指定索引名稱敛纲。因此,重要的是在存儲(chǔ)任何此類文檔之前創(chuàng)建索引剂癌。讓我們
test_index_01
從終端創(chuàng)建一個(gè)名為“?”?的索引淤翔,如下所示:
curl -XPUT localhost:9200/test_name_01
上面的命令將產(chǎn)生如下所示的響應(yīng):
{
“acknowledged”: true,
“shards_acknowledged”: true,
“index”: ”test_index_01"
}
3.2建立文件
現(xiàn)在我們已經(jīng)創(chuàng)建了索引,我們可以將文檔索引到elasticsearch佩谷。
在這種情況下旁壮,我們將為文檔ID等于1的文檔建立索引(存儲(chǔ))监嗜。可以按照以下步驟進(jìn)行操作:
curl -XPUT localhost:9200/test_index_01/test_type_01/1 -d ‘{
“name”: ”ArunMohan”,
“age”: 32
}’
在上述請(qǐng)求中抡谐,以下是我們傳遞給elasticsearch的數(shù)據(jù)的分割信息
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
}
在響應(yīng)中裁奇,我們?cè)俅慰梢钥吹剿饕Q(“ _index”),類型名稱(“ _type”)麦撵,文檔ID(“ _ id”)刽肠。還將操作狀態(tài)作為“已創(chuàng)建”值∶馕福“ created”的值是true音五,表示文檔索引成功。
3.3閱讀文件
可以使用帶有索引名稱杜秸,類型名稱和其中指定的文檔ID的GET請(qǐng)求從elasticsearch中檢索文檔放仗。這充當(dāng)該文檔的準(zhǔn)確地址(前提是所傳遞的所有三個(gè)信息都是準(zhǔn)確的),Elasticsearch將為我們獲取該文檔撬碟。讓我們看看如何檢索剛剛索引的文檔诞挨。
curl -XGET localhost:9200/test_index_01/test_type_01/1
上面的請(qǐng)求將返回如下響應(yīng):
{
? _index: test_index_01,
? _type: test_type_01,
? _id: 1,
? _version: 1,
? found: true,
? _source: {
? ? name: ArunMohan,
? ? age: 32
? }
}
在以上響應(yīng)中,我們可以看到文檔位于響應(yīng)的“ _source”對(duì)象下呢蛤。元數(shù)據(jù)包括其他信息和檢索狀態(tài)為“已找到”惶傻。
3.4更新文件
如果需要更新已經(jīng)建立索引的文檔的字段怎么辦?Elasticsearch為我們提供了此操作的更新API其障。在我們的示例中银室,假設(shè)我要使用新值31更新年齡字段。對(duì)此的請(qǐng)求如下所示:
curl -XPOST localhost:9200/test_index_01/test_type_01/1/_update -d '{"doc":{"age":31}}'
您可能已經(jīng)注意到励翼,我在請(qǐng)求中僅給出了必填字段和該字段的新值({“ age”:31})蜈敢。在名為“ doc”的對(duì)象下也是如此。該請(qǐng)求還包含有關(guān)要更新的文檔的所有信息(索引名稱汽抚,類型名稱和文檔ID)抓狭,以便Elasticsearch可以找到該文檔并對(duì)該特定字段進(jìn)行更改(這不是它的確切工作方式,而是目前造烁,我們正在深潛)》窆現(xiàn)在,如果文檔中不存在這樣的字段惭蟋,Elasticsearch將在文檔中創(chuàng)建一個(gè)這樣的字段苗桂。
對(duì)于以上請(qǐng)求,我們將獲得以下響應(yīng):
{
? "_index": "test_index_01",
? "_type": "test_type_01",
? "_id": "1",
? "_version": 2,
? "result": "updated",
? "_shards": {
? ? "total": 2,
? ? "successful": 1,
? ? "failed": 0
? }
}
在以上響應(yīng)的結(jié)果字段中告组,我們可以看到狀態(tài)為“已更新”煤伟,表明更新成功。
3.5刪除文件
刪除類似于前面提到的內(nèi)容。只需提供索引名稱持偏,類型名稱和要?jiǎng)h除的文檔以及請(qǐng)求的文檔ID驼卖,即可將其刪除,如下所示:
curl -XDELETE localhost:9200/test_index_01/test_type_01/1
這將使我們得到如下響應(yīng):
{
? "found": true,
? "_index": "test_index_01",
? "_type": "test_type_01",
? "_id": "1",
? "_version": 3,
? "result": "deleted",
? "_shards": {
? ? "total": 2,
? ? "successful": 1,
? ? "failed": 0
? }
}
結(jié)論
在本文中鸿秆,我們已經(jīng)看到了Elasticsearch的安裝酌畜,然后是其上的基本CRUD操作。在本系列的下一個(gè)博客中卿叽,我們將看到如何在同一系統(tǒng)上使用多個(gè)elasticsearch實(shí)例桥胞。