手把手教你搭建一個 Elasticsearch 集群

2022-01-31 逆襲的二胖
在上篇文章《張重慶,你騙我吃了那麼多年的雞公煲,竟然不是重慶的?》中二胖用 ElasticSearch 挖出了大家吃了好多年的重慶雞公煲背後的故事——重慶雞公煲不是重慶的,而是一個叫張重慶的上海人創辦的
安利一下,點擊上方連結即可查看上篇文章,這是一篇很有趣的技術文哦

下圖就是二胖用 ElasticSearch 做的可視化,很明顯看到重慶幾乎沒有重慶雞公煲相關的餐廳。

ElasticSearch確實是一個非常牛逼的開源軟體,在上篇文章中二胖也簡要地介紹了它的主要功能。不過,ES最難的地方應該不是它的運用,而是它的部署,坑真的超級多,所以這篇文章,我們就來介紹一下怎麼部署 ElasticSearch 集群吧!

以下內容來源:進擊的Coder(ID:FightingCoder)

為何要搭建 Elasticsearch 集群

凡事都要講究個為什麼。在搭建集群之前,我們首先先問一句,為什麼我們需要搭建集群?它有什麼優勢呢?

高可用性

Elasticsearch 作為一個搜尋引擎,我們對它的基本要求就是存儲海量數據並且可以在非常短的時間內查詢到我們想要的信息。所以第一步我們需要保證的就是 Elasticsearch 的高可用性,什麼是高可用性呢?它通常是指,通過設計減少系統不能提供服務的時間。假設系統一直能夠提供服務,我們說系統的可用性是 100%。如果系統在某個時刻宕掉了,比如某個網站在某個時間掛掉了,那麼就可以它臨時是不可用的。所以,為了保證 Elasticsearch 的高可用性,我們就應該儘量減少 Elasticsearch 的不可用時間。

那麼怎樣提高 Elasticsearch 的高可用性呢?這時集群的作用就體現出來了。假如 Elasticsearch 只放在一臺伺服器上,即單機運行,假如這臺主機突然斷網了或者被攻擊了,那麼整個 Elasticsearch 的服務就不可用了。但如果改成 Elasticsearch 集群的話,有一臺主機宕機了,還有其他的主機可以支撐,這樣就仍然可以保證服務是可用的。

那可能有的小夥伴就會說了,那假如一臺主機宕機了,那麼不就無法訪問這臺主機的數據了嗎?那假如我要訪問的數據正好存在這臺主機上,那不就獲取不到了嗎?難道其他的主機裡面也存了一份一模一樣的數據?那這豈不是很浪費嗎?

為了解答這個問題,這裡就引出了 Elasticsearch 的信息存儲機制了。首先解答上面的問題,一臺主機宕機了,這臺主機裡面存的數據依然是可以被訪問到的,因為在其他的主機上也有備份,但備份的時候也不是整臺主機備份,是分片備份的,那這裡就又引出了一個概念——分片。

分片,英文叫做 Shard,顧名思義,分片就是對數據切分成了多個部分。我們知道 Elasticsearch 中一個索引(Index)相當於是一個資料庫,如存某網站的用戶信息,我們就建一個名為 user 的索引。但索引存儲的時候並不是整個存一起的,它是被分片存儲的,Elasticsearch 默認會把一個索引分成五個分片,當然這個數字是可以自定義的。分片是數據的容器,數據保存在分片內,分片又被分配到集群內的各個節點裡。當你的集群規模擴大或者縮小時, Elasticsearch 會自動的在各節點中遷移分片,使得數據仍然均勻分布在集群裡,所以相當於一份數據被分成了多份並保存在不同的主機上。

那這還是沒解決問題啊,如果一臺主機掛掉了,那麼這個分片裡面的數據不就無法訪問了?別的主機都是存儲的其他的分片。其實是可以訪問的,因為其他主機存儲了這個分片的備份,叫做副本,這裡就引出了另外一個概念——副本。

副本,英文叫做 Replica,同樣顧名思義,副本就是對原分片的複製,和原分片的內容是一樣的,Elasticsearch 默認會生成一份副本,所以相當於是五個原分片和五個分片副本,相當於一份數據存了兩份,並分了十個分片,當然副本的數量也是可以自定義的。這時我們只需要將某個分片的副本存在另外一臺主機上,這樣當某臺主機宕機了,我們依然還可以從另外一臺主機的副本中找到對應的數據。所以從外部來看,數據結果是沒有任何區別的。

一般來說,Elasticsearch 會儘量把一個索引的不同分片存儲在不同的主機上,分片的副本也儘可能存在不同的主機上,這樣可以提高容錯率,從而提高高可用性。

但這時假如你只有一臺主機,那不就沒辦法了嗎?分片和副本其實是沒意義的,一臺主機掛掉了,就全掛掉了。

健康狀態

針對一個索引,Elasticsearch 中其實有專門的衡量索引健康狀況的標誌,分為三個等級:

green,綠色。這代表所有的主分片和副本分片都已分配。你的集群是 100% 可用的。

yellow,黃色。所有的主分片已經分片了,但至少還有一個副本是缺失的。不會有數據丟失,所以搜索結果依然是完整的。不過,你的高可用性在某種程度上被弱化。如果更多的分片消失,你就會丟數據了。所以可把 yellow 想像成一個需要及時調查的警告。

red,紅色。至少一個主分片以及它的全部副本都在缺失中。這意味著你在缺少數據:搜索只能返回部分數據,而分配到這個分片上的寫入請求會返回一個異常。

如果你只有一臺主機的話,其實索引的健康狀況也是 yellow,因為一臺主機,集群沒有其他的主機可以防止副本,所以說,這就是一個不健康的狀態,因此集群也是十分有必要的。

存儲空間

另外,既然是群集,那麼存儲空間肯定也是聯合起來的,假如一臺主機的存儲空間是固定的,那麼集群它相對於單個主機也有更多的存儲空間,可存儲的數據量也更大。

所以綜上所述,我們需要一個集群!

詳細了解 Elasticsearch 集群

接下來我們再來了解下集群的結構是怎樣的。

首先我們應該清楚多臺主機構成了一個集群,每臺主機稱作一個節點(Node)。

如圖就是一個三節點的集群:

在圖中,每個 Node 都有三個分片,其中 P 開頭的代表 Primary 分片,即主分片,R 開頭的代表 Replica 分片,即副本分片。所以圖中主分片 1、2,副本分片 0 儲存在 1 號節點,副本分片 0、1、2 儲存在 2 號節點,主分片 0 和副本分片 1、2 儲存在 3 號節點,一共是 3 個主分片和 6 個副本分片。同時我們還注意到 1 號節點還有個 MASTER 的標識,這代表它是一個主節點,它相比其他的節點更加特殊,它有權限控制整個集群,比如資源的分配、節點的修改等等。

這裡就引出了一個概念就是節點的類型,我們可以將節點分為這麼四個類型:

主節點:即 Master 節點。主節點的主要職責是和集群操作相關的內容,如創建或刪除索引,跟蹤哪些節點是群集的一部分,並決定哪些分片分配給相關的節點。穩定的主節點對集群的健康是非常重要的。默認情況下任何一個集群中的節點都有可能被選為主節點。索引數據和搜索查詢等操作會佔用大量的cpu,內存,io資源,為了確保一個集群的穩定,分離主節點和數據節點是一個比較好的選擇。雖然主節點也可以協調節點,路由搜索和從客戶端新增數據到數據節點,但最好不要使用這些專用的主節點。一個重要的原則是,儘可能做儘量少的工作。

數據節點:即 Data 節點。數據節點主要是存儲索引數據的節點,主要對文檔進行增刪改查操作,聚合操作等。數據節點對 CPU、內存、IO 要求較高,在優化的時候需要監控數據節點的狀態,當資源不夠的時候,需要在集群中添加新的節點。

負載均衡節點:也稱作 Client 節點,也稱作客戶端節點。當一個節點既不配置為主節點,也不配置為數據節點時,該節點只能處理路由請求,處理搜索,分發索引操作等,從本質上來說該客戶節點表現為智能負載平衡器。獨立的客戶端節點在一個比較大的集群中是非常有用的,他協調主節點和數據節點,客戶端節點加入集群可以得到集群的狀態,根據集群的狀態可以直接路由請求。

預處理節點:也稱作 Ingest 節點,在索引數據之前可以先對數據做預處理操作,所有節點其實默認都是支持 Ingest 操作的,也可以專門將某個節點配置為 Ingest 節點。

以上就是節點幾種類型,一個節點其實可以對應不同的類型,如一個節點可以同時成為主節點和數據節點和預處理節點,但如果一個節點既不是主節點也不是數據節點,那麼它就是負載均衡節點。具體的類型可以通過具體的配置文件來設置。

怎樣搭建 Elasticsearch 集群

好,接下來我們就來動手搭建一個集群吧。

這裡我一共擁有七臺 Linux 主機,系統是 Ubuntu 16.04,都連接在一個內網中,IP 地址為:

10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.9
10.0.0.10

每臺主機的存儲空間是 1TB,內存是 13GB。

下面我們來一步步介紹如何用這幾臺主機搭建一個 Elasticsearch 集群,這裡使用的 Elasticsearch 版本是 6.3.2,另外我們還需要安裝 Kibana 用來可視化監控和管理 Elasticsearch 的相關配置和數據,使得集群的管理更加方便。

環境配置如下所示:

名稱內容主機臺數7主機內存13GB主機系統Ubuntu 16.04存儲空間1TBElasticsearch 版本6.3.2Java 版本1.8Kibana 版本6.3.2安裝 Java

Elasticsearch 是基於 Lucene 的,而 Lucene 又是基於 Java 的。所以第一步我們就需要在每臺主機上安裝 Java。

首先更新 Apt 源:

sudo apt-get update

然後安裝 Java:

sudo apt-get install default-jre

安裝好了之後可以檢查下 Java 的版本:

java -version

這裡的版本是 1.8,類似輸出如下:

openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.16.04.1-b11)
OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

如果看到上面的內容就說明安裝成功了。

注意一定要每臺主機都要安裝。

安裝 Elasticsearch

接下來我們來安裝 Elasticsearch,同樣是每臺主機都需要安裝。

首先需要添加 Apt-Key:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

然後添加 Elasticsearch 的 Repository 定義:

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

接下來安裝 Elasticsearch 即可:

sudo apt-get update 
sudo apt-get install elasticsearch

運行完畢之後我們就完成了 Elasticsearch 的安裝,注意還是要每臺主機都要安裝。

配置 Elasticsearch

這時我們只是每臺主機都安裝好了 Elasticsearch,接下來我們還需要將它們聯繫在一起構成一個集群。

安裝完之後,Elasticsearch 的配置文件是 /etc/elasticsearch/elasticsearch.yml,接下來讓我們編輯一下配置文件:

通過 cluster.name 可以配置集群的名稱,集群是一個整體,因此名稱都要一致,所有主機都配置成相同的名稱,配置示例:

cluster.name: germey-es-clusters

通過 node.name 可以配置每個節點的名稱,每個節點都是集群的一部分,每個節點名稱都不要相同,可以按照順序編號,配置示例:

node.name: es-node-1

其他的主機可以配置為 es-node-2、es-node-3 等。

通過 node.master 可以配置該節點是否有資格成為主節點,如果配置為 true,則主機有資格成為主節點,配置為 false 則主機就不會成為主節點,可以去當數據節點或負載均衡節點。注意這裡是有資格成為主節點,不是一定會成為主節點,主節點需要集群經過選舉產生。這裡我配置所有主機都可以成為主節點,因此都配置為 true,配置示例:

node.master: true

通過 node.data 可以配置該節點是否為數據節點,如果配置為 true,則主機就會作為數據節點,注意主節點也可以作為數據節點,當 node.master 和 node.data 均為 false,則該主機會作為負載均衡節點。這裡我配置所有主機都是數據節點,因此都配置為 true,配置示例:

node.data: true

通過 path.data 和 path.logs 可以配置 Elasticsearch 的數據存儲路徑和日誌存儲路徑,可以指定任意位置,這裡我指定存儲到 1T 硬碟對應的路徑下,另外注意一下寫入權限問題,配置示例:

path.data: /datadrive/elasticsearch/data
path.logs: /datadrive/elasticsearch/logs

我們需要設定 Elasticsearch 運行綁定的 Host,默認是無法公開訪問的,如果設置為主機的公網 IP 或 0.0.0.0 就是可以公開訪問的,這裡我們可以都設置為公開訪問或者部分主機公開訪問,如果是公開訪問就配置為:

network.host: 0.0.0.0

如果不想被公開訪問就不用配置。

另外還可以配置訪問的埠,默認是 9200:

http.port: 9200

通過 discovery.zen.ping.unicast.hosts 可以配置集群的主機地址,配置之後集群的主機之間可以自動發現,這裡我配置的是內網地址,配置示例:

discovery.zen.ping.unicast.hosts: ["10.0.0.4", "10.0.0.5", "10.0.0.6", "10.0.0.7", "10.0.0.8", "10.0.0.9", "10.0.0.10"]

這裡請改成你的主機對應的 IP 地址。

為了防止集群發生「腦裂」,即一個集群分裂成多個,通常需要配置集群最少主節點數目,通常為 (可成為主節點的主機數目 / 2) + 1,例如我這邊可以成為主節點的主機數目為 7,那麼結果就是 4,配置示例:

discovery.zen.minimum_master_nodes: 4

另外還可以配置當最少幾個節點回復之後,集群就正常工作,這裡我設置為 4,可以酌情修改,配置示例:

gateway.recover_after_nodes: 4

其他的暫時先不需要配置,保存即可。注意每臺主機都需要配置。

啟動 Elasticsearch

配置完成之後就可以在每臺主機上分別啟動 Elasticsearch 服務了,命令如下:

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

所有主機都啟動之後,我們在任意主機上就可以查看到集群狀態了,命令行如下:

curl -XGET 'http://localhost:9200/_cluster/state?pretty'

類似的輸出如下:

{
    "cluster_name": "germey-es-clusters",
    "compressed_size_in_bytes": 20799,
    "version": 658,
    "state_uuid": "a64wCwPnSueKRtVuKx8xRw",
    "master_node": "73BQvOC2TpSXcr-IXBcDdg",
    "blocks": {},
    "nodes": {
        "I2M80AP-T7yVP_AZPA0bpA": {
            "name": "es-node-1",
            "ephemeral_id": "KpCG4jNvTUGKNHNwKKoMrA",
            "transport_address": "10.0.0.4:9300",
            "attributes": {
                "ml.machine_memory": "7308464128",
                "ml.max_open_jobs": "20",
                "xpack.installed": "true",
                "ml.enabled": "true"
            }
        },
        "73BQvOC2TpSXcr-IXBcDdg": {
            "name": "es-node-7",
            "ephemeral_id": "Fs9v2XTASnGbqrM8g7IhAQ",
            "transport_address": "10.0.0.10:9300",
            "attributes": {
                "ml.machine_memory": "14695202816",
                "ml.max_open_jobs": "20",
                "xpack.installed": "true",
                "ml.enabled": "true"
            }
        },
....

可以看到這裡輸出了集群的相關信息,同時 nodes 欄位裡面包含了每個節點的詳細信息,這樣一個基本的集群就構建完成了。

安裝 Kibana

接下來我們需要安裝一個 Kibana 來幫助可視化管理 Elasticsearch,依然還是通過 Apt 安裝,只需要任意一臺主機安裝即可,因為集群是一體的,所以 Kibana 在任意一臺主機只要能連接到 Elasticsearch 即可,安裝命令如下:

sudo apt-get install kibana

安裝之後修改 /etc/kibana/kibana.yml,設置公開訪問和綁定的埠:

server.port: 5601
server.host: "0.0.0.0"

然後啟動服務:

sudo systemctl daemon-reload
sudo systemctl enable kibana.service
sudo systemctl start kibana.service

這樣我們可以在瀏覽器輸入該臺主機的 IP 加埠,查看 Kibana 管理頁面了,類似如下:

這樣 Kibana 可視化管理就配置成功了。

配置認證

現在集群已經初步搭建完成了,但是現在集群很危險,如果我們配置了可公網訪問,那麼它是可以被任何人操作的,比如儲存數據,增刪節點等,這是非常危險的,所以我們必須要設置訪問權限。

在 Elasticsearch 中,配置認證是通過 X-Pack 插件實現的,幸運的是,我們不需要額外安裝了,在 Elasticsearch 6.3.2 版本中,該插件是默認集成到 Elasticsearch 中的,所以我們只需要更改一部分設置就可以了。

首先我們需要升級 License,只有修改了高級版 License 才能使用 X-Pack 的權限認證功能。

在 Kibana 中訪問 Management -> Elasticsearch -> License Management,點擊右側的升級 License 按鈕,可以免費試用 30 天的高級 License,升級完成之後頁面會顯示如下:

另外還可以使用 API 來更新 License,詳情可以參考官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/6.2/update-license.html。

然後每臺主機需要修改 /etc/elasticsearch/elasticsearch.yml 文件,開啟 Auth 認證功能:

xpack.security.enabled: true

隨後設置 elastic、kibana、logstash_system 三個用戶的密碼,任意一臺主機修改之後,一臺修改,多臺生效,命令如下:

/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

運行之後會依次提示設置這三個用戶的密碼並確認,一共需要輸入六次密碼,完成之後就成功設置好了密碼了。

修改完成之後重啟 Elasticsearch 和 Kibana 服務:

sudo systemctl restart elasticsearch.service
sudo systemctl restart kibana.service

這時再訪問 Kibana 就會跳轉到登錄頁面了:

可以使用 elastic 用戶登錄,它的角色是超級管理員,登錄之後就可以重新進入 Kibana 的管理頁面。

我們還可以自行修改和添加帳戶,在 Management -> Security -> User/Roles 裡面:

例如這裡添加一個超級管理員的帳戶:

這樣以後我們就可以使用新添加的用戶來登錄和訪問了。

另外修改權限認證之後,Elasticsearch 也不能直接訪問了,我們也必須輸入用戶密碼才可以訪問和調用其 API,保證了安全性。

開啟內存鎖定

系統默認會進行內存交換,這樣會導致 Elasticsearch 的性能變差,我們查看下內存鎖定狀態,在任意一臺主機上的訪問 http://ip:port/_nodes?filter_path=**.mlockall:

可以看到如下結果:

{
    "nodes": {
        "73BQvOC2TpSXcr-IXBcDdg": {
            "process": {
                "mlockall": false
            }
        },
        "9tRr4nFDT_2rErLLQB2dIQ": {
            "process": {
                "mlockall": false
            }
        },
        "hskSDv_JQlCUnjp_INI8Kg": {
            "process": {
                "mlockall": false
            }
        },
        "LgaRuqXBTZaBdDGAktFWJA": {
            "process": {
                "mlockall": false
            }
        },
        "ZcsZgowERzuvpqVbYOgOEA": {
            "process": {
                "mlockall": false
            }
        },
        "I2M80AP-T7yVP_AZPA0bpA": {
            "process": {
                "mlockall": false
            }
        },
        "_mSmfhUtQiqhzTKZ7u75Dw": {
            "process": {
                "mlockall": true
            }
        }
    }
}

這代表內存交換沒有開啟,會影響 Elasticsearch 的性能,所以我們需要開啟內存物理地址鎖定,每臺主機需要修改 /etc/elasticsearch/elasticsearch.yml 文件,修改如下配置:

bootstrap.memory_lock: true

但這樣修改之後重新啟動是會報錯的,Elasticsearch 無法正常啟動,查看日誌,報錯如下:

[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

這裡需要修改兩個地方,第一個是 /etc/security/limits.conf,添加如下內容:

* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
* hard memlock unlimited
* soft memlock unlimited

另外還需要修改 /etc/systemd/system.conf,修改如下內容:

DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity

詳細的解釋可以參考:https://segmentfault.com/a/1190000014891856。

修改之後重啟 Elasticsearch 服務:

sudo systemctl restart elasticsearch.service

重新訪問剛才的地址,即可發現每臺主機的物理地址鎖定都被打開了:

{
    "nodes": {
        "73BQvOC2TpSXcr-IXBcDdg": {
            "process": {
                "mlockall": true
            }
        },
        "9tRr4nFDT_2rErLLQB2dIQ": {
            "process": {
                "mlockall": true
            }
        },
        "hskSDv_JQlCUnjp_INI8Kg": {
            "process": {
                "mlockall": true
            }
        },
        "LgaRuqXBTZaBdDGAktFWJA": {
            "process": {
                "mlockall": true
            }
        },
        "ZcsZgowERzuvpqVbYOgOEA": {
            "process": {
                "mlockall": true
            }
        },
        "I2M80AP-T7yVP_AZPA0bpA": {
            "process": {
                "mlockall": true
            }
        },
        "_mSmfhUtQiqhzTKZ7u75Dw": {
            "process": {
                "mlockall": true
            }
        }
    }
}

這樣我們就又解決了性能的問題。

安裝分詞插件

另外還推薦安裝中文分詞插件,這樣可以對中文進行全文索引,安裝命令如下:

sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip

安裝完之後需要重啟 Elasticsearch 服務:

sudo systemctl restart elasticsearch.service

主機監控

到此為止,我們的 Elasticsearch 集群就搭建完成了。

最後我們看下 Kibana 的部分功能,看下整個 Elasticsearch 有沒有在正常工作。

訪問 Kibana,打開 Management -> Elasticsearch ->Index Management,即可看到當前有的一些索引和狀態:

打開 Monitoring,可以查看 Elasticsearch 和 Kibana 的狀態:

進一步點擊 Nodes,可以查看各個節點的狀態:

打開任意節點,可以查看當前資源狀況變化:

另外還有一些其他的功能如可視化、圖表、搜索等等,這裡就不再一一列舉了,更多功能可以詳細了解 Kibana。

以上都是自己在安裝過程中的記錄和趟過的坑,如有疏漏,還望指正。

還有更多的 Elasticsearch 相關的內容可以參考官方文檔:https://www.elastic.co/guide/index.html。

參考資料

https://www.elastic.co/guide/en/x-pack/current/security-getting-started.html

https://segmentfault.com/a/1190000014891856

https://blog.csdn.net/a19860903/article/details/72467996

https://logz.io/blog/elasticsearch-cluster-tutorial/

https://es.xiaoleilu.com/020_Distributed_Cluster/30_Scale_more.html

https://blog.csdn.net/archer119/article/details/76589189

相關焦點

  • 搭建Elasticsearch集群
    為什麼要搭建集群?凡事都要講究個為什麼。在搭建集群之前,我們首先先問一句,為什麼我們需要搭建集群?它有什麼優勢呢?高可用Elasticsearch 作為一個搜尋引擎,我們對它的基本要求就是存儲海量數據並且可以在非常短的時間內查詢到我們想要的信息。所以第一步我們需要保證的就是 Elasticsearch 的高可用性,什麼是高可用性呢?
  • Elasticsearch + Kibana 集群環境搭建
    本文主要介紹 elasticsearch 集群以及 kibana 的環境搭建。ElasticsearchElasticsearch 可以理解為一個支持模糊查詢的資料庫,用來存儲日誌。下載 Elasticsearchwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gztar -xzvf elasticsearch-6.2.3.tar.gz修改配置文件修改 config/elasticsearch.yml
  • Docker簡易搭建 ElasticSearch 集群
    --name ES01 elasticsearch:5.6.8  docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9201:9201 -p 9301:9301 -v /home/soft/ES/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml -
  • 全文搜尋引擎 Elasticsearch 集群搭建入門教程
    本文從零開始,講解如何使用 Elasticsearch 搭建自己的全文搜尋引擎。每一步都有詳細的說明,大家跟著做就能學會。如果外網還是不能訪問,則有可能是防火牆設置導致的 ( 關閉防火牆:service iptables stop )修改配置文件:1vim config/elasticsearch.yml 修改 :1cluster.name : my-app  (集群的名字,名字相同的就是一個集群)23node.name
  • ELK教程1:ElasticSearch集群的部署
    安裝計劃本文主要講解如何部署ElasticSearch 集群,部署的ElasticSearch的版本為7.2,計劃用三臺機器組成一個ElasticSearch集群,從而組成高可用,機器分配如下:| 節點 | 規則 | 數量 | | --- | : | :----: | | 192.168.1.1 | 2核4G | 1 | | 192.168.1.2 | 2核4G | 1
  • ElasticSearch學習筆記(三)-ES集群基本概念及搭建過程及主要工作原理
    中如何安裝虛擬機   並且軟體以及linux系統我都已經通過百度網盤連結的方式分享出來了ES集群的搭建非常的簡單,只需要簡單配置一下config目錄下的elasticsearch.yml文件即可.4.ES設置開機自啟動因為這裡我這裡並不是在雲伺服器上面搭建的ES集群,所以每次都需要我自己打開虛擬機之後自己手動開啟elasticSearch,試了幾天之後發現,這樣太煩了,還是配置一下elasticSearch的開機自啟動吧.
  • 測試 - elasticsearch集群(不同雲伺服器上)的搭建與可視化
    規定不能以root用戶啟動)useradd estail /etc/passwd可以看到最後一行確實添加了一個名為es的用戶,為解壓出來的elasticsearch目錄賦予權限,賦權之前    為了方便監測elasticsearch的狀態,有兩個合適的可視化插件,分別是elasticsearch-head和cerebro。    先說head插件,由於安裝head需要node環境,乾脆安裝了一個node虛擬環境NVM。
  • 手把手教你搭建 ELK 實時日誌分析平臺
    本篇文章主要是手把手教你搭建 ELK 實時日誌分析平臺,那麼,ELK 到底是什麼呢?ELK 是三個開源項目的首字母縮寫,這三個項目分別是:Elasticsearch、Logstash 和 Kibana。
  • Elasticsearch 跨網絡、跨集群同步選型指南
    https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html2.2 跨網絡兩個集群不在一個區域網內,一個掛在雲端、一個在本地。
  • Elasticsearch專題
    Elasticsearch入門(環境搭建)ES是什麼基於Lucene的一個開源的,支持分布式的
  • 終於有人把elasticsearch原理講通了!
    呂老師:類型是用來定義數據結構的,你可以認為是mysql中的一張表。文檔就是最終的數據了,你可以認為一個文檔就是一條記錄。呂老師:沒錯,在elasticsearch中,節點是對等的,節點間會通過自己的一些規則選取集群的master,master會負責集群狀態信息的改變,並同步給其他節點。
  • ​打開ElasticSearch、kibana、logstash的正確方式
    logstash將es數據從索引庫中導出logstash對Elasticsearch索引庫中數據的導入三、安裝ik中文分詞器ik中文分詞器插件的安裝分詞結果測試四、Elasticsearch集群的搭建創建集群所需要的配置文件及數據文件,以便容器的映射創建elasticsearch容器並啟動所遇問題前言Elasticsearch是什麼?
  • Elastic App Search初體驗
    1 引言如果你有搭建公司內部文檔搜索的需求或者公司內部搜索系統,並且不想花費太多的時間,那麼你可以嘗試以下AppSearch;App Search是一款開源的搜索解決方案,我們不需要寫一行代碼就可以享用Elasticsearch的高級搜索功能,並可以定製化搜索界面,AppSearch提供了
  • 監控 Elasticsearch 及 Kibana
    一個穩定的 Elastic Stack 集群對於數據的實時採集,處理及查詢非常重要。我們可以使用一個專有的 Elasticsearch 集群來監視一個生產環境的 Elasticsearch 集群。在今天的幾篇中,我將詳細講述如何來對 Elastic Stack 的各個軟體棧進行監控。
  • Elk環境篇 --- 本地快速搭建你的ElasticSearch及Kibana
    這裡說它通知你你的集群裡面啥數據都沒有,這時候隨便點第一個就是了比如說,你可以有一個客戶數據的索引,另一個產品目錄的索引,還有一個訂單數據的索引。一個索引由一個名字來標識(必須全部是小寫字母的),並且當我們要對對應於這個索引中的文檔進行索引、搜索、更新和刪除的時候,都要使用到這個名字。在一個集群中,可以定義任意多的索引。2.2.2、類型 type在一個索引中,你可以定義一種或多種類型。
  • ElasticSearch介紹
    /cn/products/elasticsearchGithub:https://github.com/elastic/elasticsearch總結:1、elasticsearch是一個基於Lucene的高擴展的分布式搜索伺服器,支持開箱即用。
  • 使用 Elasticsearch 和 cAdvisor 監控 Docker 容器
    cAdvisor 有兩個比較酷的特性:設置測試集群,或搭建自己的基礎架構和我以前的文章[8]一樣,我習慣提供一個簡單的腳本,讓讀者不用花很多時間就能部署好和我一樣的測試環境。你可以使用以下(非生產環境使用的)腳本來搭建一個 Swarm 模式的集群,其中一個容器運行著 Elasticsearch。
  • 手把手教你使用Flask搭建ES搜尋引擎(實戰篇)
    文章:Python爬蟲與數據挖掘上一篇簡單說了下 ES 在 Python 的增刪改查,手把手教你使用Flask搭建ES搜尋引擎(預備篇)。現在正式進入主題:開始使用 Flask 搭建 ES 搜索。這裡我採用兩個分支來作為數據支撐,一個是 Math 入口,另一個是 Baike 入口,數據的來源是基於上一篇的百度百科爬蟲所得,根據 深度優先 的爬取方式抓取後放入 ES 中。
  • 渣渣菜雞的 ElasticSearch 源碼解析 —— 環境搭建
    (注意:這個版本需要和下面的源碼版本一致)下載源碼從 https://github.com/elastic/elasticsearch 上下載相應版本的原始碼,這裡建議用 git clone ,這樣的話後面你可以隨意切換到 ElasticSearch 的其他版本去。
  • Elasticsearch 的快照插件
    Elasticsearch 的快照倉庫分為本地倉庫(local repository)和遠程倉庫(remote repository)兩種。本地倉庫主要作為測試使用(單元測試或者試用 Elasticsearch 時使用),在生產線上使用意義不大。生產線上主要使用遠程倉庫,因為它可以將集群數據放在集群以外的地方,以作為數據備份。官方遠程倉庫插件主要有:AWS、GCS、Azure、HDFS 四個插件。