- Elasticsearch 版本:5.4
- Elasticsearch快速入門 第1篇:Elasticsearch入門
- Elasticsearch快速入門 第2篇:Elasticsearch和Kibana安裝
- Elasticsearch快速入門 第3篇:Elasticsearch索引和文檔操作
- Elasticsearch快速入門 第4篇:Elasticsearch文檔查詢
Elasticsearch安裝
Elasticsearch 至少需要Java 8。在撰寫本文時,建議你使用Oracle JDK版本1.8.0_131。Java安裝因平台而異,所以在這里不再贅述。Oracle的推薦安裝文檔可以在Oracle的網站上找到。在安裝 Elasticsearch 之前,請先檢查您的Java版本,然后再運行(如果需要,請相應地進行安裝/升級):
java -version
echo $JAVA_HOME
安裝了Java之后,下載並運行 Elasticsearch 。這些二進制文件可以在www.elastic.co/downloads下載,與過去所有的所有版本一起提供。對於每個版本,您可以選擇一個zip、tar、DEB或RPM包。
為了簡單起見,下載Elasticsearch 5.4.1 tar,方式如下(window用戶下載Elasticsearch 5.4.1 zip)
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.1.tar.gz
然后解壓縮如下
tar -xvf elasticsearch-5.4.1.tar.gz
然后進入bin目錄
cd elasticsearch-5.4.1 / bin
現在准備啟動我們的節點和單個集群(Windows用戶應該運行 Elasticsearch.bat文件)
./elasticsearch
如果一切順利,您應該會看到一堆如下所示的消息:
[2017-06-09T12:11:37,851][INFO ][o.e.n.Node ] [] initializing ... [2017-06-09T12:11:38,117][INFO ][o.e.e.NodeEnvironment ] [9fzvF2H] using [1]data paths, mounts [[(D:)]], net usable_space [111.8gb], net total_space [123.5gb], spins? [unknown], types [NTFS] [2017-06-09T12:11:38,117][INFO ][o.e.e.NodeEnvironment ] [9fzvF2H] heap size[1.9gb], compressed ordinary object pointers [true] [2017-06-09T12:11:38,117][INFO ][o.e.n.Node ] node name [9fzvF2H]derived from node ID [9fzvF2HKTverLyZwFl6w0w]; set [node.name] to override [2017-06-09T12:11:38,117][INFO ][o.e.n.Node ] version[5.4.1], pid[3964], build[2cfe0df/2017-05-29T16:05:51.443Z], OS[Windows 7/6.1/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_131/25.131-b11] [2017-06-09T12:11:38,117][INFO ][o.e.n.Node ] JVM arguments [-Xms2g, -Xmx2g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+DisableExplicitGC, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.permissionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j.skipJansi=true, -XX:+HeapDumpOnOutOfMemoryError, -Delasticsearch, -Des.path.home=D:\ProgramFiles\elasticsearch-5.4.1] [2017-06-09T12:11:39,193][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [aggs-matrix-stats] [2017-06-09T12:11:39,193][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [ingest-common] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [lang-expression] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [lang-groovy] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [lang-mustache] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [lang-painless] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [percolator] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [reindex] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [transport-netty3] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] loaded module [transport-netty4] [2017-06-09T12:11:39,209][INFO ][o.e.p.PluginsService ] [9fzvF2H] no plugins loaded [2017-06-09T12:11:41,471][INFO ][o.e.d.DiscoveryModule ] [9fzvF2H] using discovery type [zen] [2017-06-09T12:11:42,032][INFO ][o.e.n.Node ] initialized [2017-06-09T12:11:42,032][INFO ][o.e.n.Node ] [9fzvF2H] starting ... [2017-06-09T12:11:43,171][INFO ][o.e.t.TransportService ] [9fzvF2H] publish_address {127.0.0.1:9300}, bound_addresses {127.0.0.1:9300}, {[::1]:9300} [2017-06-09T12:11:46,248][INFO ][o.e.c.s.ClusterService ] [9fzvF2H] new_master{9fzvF2H}{9fzvF2HKTverLyZwFl6w0w}{yMmmD0nORKqEmQ0lrqKu3Q}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined) [2017-06-09T12:11:46,280][INFO ][o.e.g.GatewayService ] [9fzvF2H] recovered[0] indices into cluster_state [2017-06-09T12:11:46,919][INFO ][o.e.h.n.Netty4HttpServerTransport] [9fzvF2H] publish_address {127.0.0.1:9200}, bound_addresses {127.0.0.1:9200}, {[::1]:9200} [2017-06-09T12:11:46,919][INFO ][o.e.n.Node ] [9fzvF2H] started
沒有太多細節,我們可以看到,我們的名為"9fzvF2H"的節點(在您的情況下將是一組不同的字符)已經啟動並在單個集群中將其選為 master 。此時先不用在意 master 是什么意思。最重要的是我們已經在一個集群中啟動了一個節點。
如前所述,我們可以修改集群或節點名稱。這可以在啟動 Elasticsearch 時從命令行完成,如下所示:
./elasticsearch -Ecluster.name = my_cluster_name -Enode.name = my_node_name
比如, D:\ProgramFiles\elasticsearch-5.4.1\bin\elasticsearch.bat -Ecluster.name=my_cluster -Enode.name=node_1
還要注意標有http的行,該信息提示我們的節點可以通過HTTP地址(127.0.0.1)和port(9200)被訪問。默認情況下, Elasticsearch 使用端口9200來提供對其REST API的訪問。如果需要,該端口是可配置的。
在瀏覽器中輸入: http://127.0.0.1:9200/ ,返回如下信息,表示安裝成功。
{ "name" : "9fzvF2H", "cluster_name" : "elasticsearch", "cluster_uuid" : "xBoSQEYqQSaJjzzpmAj7aw", "version" : { "number" : "5.4.1", "build_hash" : "2cfe0df", "build_date" : "2017-05-29T16:05:51.443Z", "build_snapshot" : false, "lucene_version" : "6.5.1" }, "tagline" : "You Know, for Search" }
探索集群
REST API
現在我們的節點(和群集)啟動並運行,接下來的步驟是了解如何與它進行通信。幸運的是, Elasticsearch 提供了一個非常全面和強大的REST API,您可以使用它來與群集進行交互。API可以完成的幾件事情如下:
- 檢查您的群集,節點和索引運行狀況,狀態和統計信息
- 管理您的集群,節點和索引數據和元數據
- 執行CRUD(創建,讀取,更新和刪除)並針對索引進行搜索操作
- 執行高級搜索操作,如分頁,排序,過濾,腳本,聚合等等
Kibana
Kibana 是一個開源分析和可視化平台,旨在可視化操作 Elasticsearch 。Kibana可以用來搜索,查看和與存儲在 Elasticsearch 索引中的數據進行交互。可以輕松地進行高級數據分析,並可在各種圖表,表格和地圖中顯示數據。
Kibana 可以輕松理解海量數據。其簡單的基於瀏覽器的界面使您能夠快速創建和共享動態儀表板,實時顯示 Elasticsearch 查詢的更改。
安裝Kibana簡單快速。您可以安裝 Kibana ,並在幾分鍾內開始探索您的 Elasticsearch 索引 - 不需要代碼,也不需要需額外的基礎架構。
安裝Kibana
本節包括安裝 Kinbana ,以及配置和運行
支持的平台
提供 Kibana 軟件包,並針對Linux,Darwin和Windows進行測試。由於Kibana運行在Node.js上,所以我們為這些平台添加了必要的Node.js二進制文件。不支持單獨維護版本的Node.js來運行Kibana。
Elasticsearch版本
應將 Kibana 配置為和 Elasticsearch 節點運行的版本相同。這是官方支持的配置。
不支持運行不同主版本的 Kibana 和 Elasticsearch (例如 Kibana 5.x 和 Elasticsearch 2.x ), Kibana 的次要版本比 Elasticsearch 的次要版本(例如 Kibana 5.1 和 Elasticsearch5.0)高也不支持。
Elasticsearch 的次要版本比kibana的次要版本高通常會起作用,不過這樣只是為了滿足首先升級 Elasticsearch ,然后升級kibana的需要,(例如 Kibana 5.0 和 Elasticsearch 5.1 )。在這種配置中, Kibana 服務器啟動時將會記錄一個警告,因此兩個版本不一致的情況只是暫時的,為了不記錄警告,還得將 Kibana 升級到與 Elasticsearch 相同的版本。
一般情況下,支持運行Kibana和 Elasticsearch 的不同補丁版本(例如 Kibana 5.0.0 和 Elasticsearch 5.0.1 ),盡管我們鼓勵用戶下載Kibana和 Elasticsearch 的相同補丁版本。
安裝包
Kibana提供以下格式的安裝包:
- tar.gz/zip: tar.gz 用於在Linux和Darwin上安裝, zip 唯一支持window的安裝包,是入門Kibana最好的選擇。Install Kibana with
.tar.gzor Install Kibana on Windows
- deb: 適用於Debian, Ubuntu, 以及其他 Debian-based系統。Install Kibana with Debian Package
- rpm:適用於 Red Hat, Centos, SLES, OpenSuSE 以及RPM-based 系統,Install Kibana with RPM
- docker:一個鏡像可以用來運行kibana作為docker容器,它附帶 X-Pack 預安裝,可從Elastic Docker注冊。(不懂docker,不知道怎么表述好)Running Kibana on Docker
如果您的Elasticsearch安裝受X-Pack安全保護, 請參閱使用Kibana與X-Pack Security進行其他安裝說明。
在windows上安裝Kibana
最新的穩定版本的Kibana可以在下載Kibana頁面找到 。其他版本可以在過去版本頁面找到 。
解壓縮。這將創建一個名為kibana-5.4.1-windows-x86的文件夾,我們將其稱為$KIBANA_HOME。在終端窗口中,CD到$KIBANA_HOME目錄下的bin,例如:
D:\>cd D:\ProgramFiles\kibana-5.4.1-windows-x86\bin
從命令行運行Kibana
kibana
出現以下日志
D:\ProgramFiles\kibana-5.4.1-windows-x86\bin>kibana log [07:29:47.631] [info][optimize] Optimizing and caching bundles for kibana, timelion and status_page. This may take a few minutes log [07:31:43.968] [info][optimize] Optimization of bundles for kibana, timelion and status_page complete in 116.34 seconds log [07:31:44.030] [info][status][plugin:kibana@5.4.1] Status changed from uninitialized to green - Ready log [07:31:44.124] [info][status][plugin:elasticsearch@5.4.1] Status changed from uninitialized to yellow - Waiting for Elasticsearch log [07:31:44.155] [info][status][plugin:console@5.4.1] Status changed from uninitialized to green - Ready log [07:31:44.170] [info][status][plugin:metrics@5.4.1] Status changed from uninitialized to green - Ready log [07:31:44.373] [info][status][plugin:timelion@5.4.1] Status changed from uninitialized to green - Ready log [07:31:44.389] [info][listening] Server running at http://localhost:5601 log [07:31:44.389] [info][status][ui settings] Status changed from uninitialized to yellow - Elasticsearch plugin is yellow log [07:31:49.435] [info][status][plugin:elasticsearch@5.4.1] Status changed from yellow to yellow - No existing Kibana index found log [07:31:50.000] [info][status][plugin:elasticsearch@5.4.1] Status changed from yellow to green - Kibana index ready log [07:31:50.000] [info][status][ui settings] Status changed from yellow to green - Ready
在瀏覽器中輸入: http://localhost:5601 ,出現界面表示安裝成功。
集群健康
讓我們先從基礎的健康檢查開始,我們可以使用它去了解我的集群是如何運作的。我們將會使用上面安裝的kibana控制台去做這個實驗,不過你也可以使用任何一個支持HTTP/REST的工具調用接口,比如curl。假如我們繼續使用剛剛啟動的 Elasticsearch 節點。
為了檢查集群監控,我們需要使用 _cat API。在Kibana控制台中運行命令 GET /_cat/health?v 。

返回內容如下:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1496995261 16:01:01 elasticsearch yellow 1 1 1 1 0 0 1 0 - 50.0%
可以看到名為 elasticsearch 的集群已經處於黃色狀態。 每當我們查詢集群健康情況時,接口可能會返回green,yellow或red狀態。green意味着一切良好(集群所有的功能都正常)。yellow意味着所有的數據都是可用的,但是一些復制分片可能沒有正確分發(集群的所有功能還是正常的)。red意味着因為某些原因導致有些數據不能使用。注意,即使集群狀態是red,它仍然可以運行一部分的功能。(例如,它依然可以從一些可用的分片處理搜索請求)但你應該盡快去修復它,因為這樣會使搜索結果丟失一些數據。
從上面的響應中,可以看到集群名稱為 elasticsearch ,只有1個節點,有1個數據,1個分片。注意,由於我們使用默認的群集名稱( Elasticsearch ),並且由於 Elasticsearch 默認使用單播網絡來查找同一台計算機上的其他節點,因此可能會意外啟動計算機上的多個節點,並使它們都加入同一個群集。在這種情況下,您可能會在上述響應中看到超過1個節點。
也可以得到集群中節點列表,如下:
GET /_cat/nodes?v
返回內容如下:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1 8 84 4 mdi * 9fzvF2H
可以看到集群中只有一個名叫"9fzvF2H"的節點。
總結
1、什么是kibana?對於目前來說,就是一個可視化界面,方便寫代碼對ES進行操作。
2、ES和kibana怎么安裝?在windows上,直接下載壓縮包,解壓后進入bin目錄,運行Elasticsearch.bat和kibana.bat即可。
3、快速檢查集群的健康狀況, GET /_cat/health?v
4、集群的健康值理解
- green:每個索引的primary shard和replica shard都是active狀態的
- yellow:每個索引的primary shard都是active狀態的,但是部分replica shard不是active狀態(比如單台機器上副本無法被分配),處於不可用的狀態
- red:不是所有索引的primary shard都是active狀態的,部分索引有數據丟失了
5、查看所有節點, GET /_cat/nodes?v
官方文檔
https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/_exploring_your_cluster.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/_cluster_health.html
https://www.elastic.co/guide/en/kibana/5.4/introduction.html
https://www.elastic.co/guide/en/kibana/5.4/setup.html
https://www.elastic.co/guide/en/kibana/5.4/install.html
https://www.elastic.co/guide/en/kibana/5.4/windows.html
參考文檔
https://github.com/13428282016/elasticsearch-CN/wiki/es-gettting-started
