在前幾天我們終於對於Elasticsearch有了初步的認識,是時候來建立我們的環境了
這邊先建立好單節點的環境就好,多節點的後面再來說
使用的話可以有幾種方式:
直接下載啟動的話,可以直接參考:
https://www.elastic.co/downloads/elasticsearch
下載一樣的kibana跟ES版本後,直接執行就可以,因為現在有自動設置security的功能所以直接啟用就好
而官方的Elastic cloud可以參考:
https://www.elastic.co/guide/en/welcome-to-elastic/current/getting-started-general-purpose.html
並且只要完成步驟1就好
接下來說docker的部分:
我自己個人的習慣是用docker compose,當然要用docker run也沒什麼問題
docker-compose.yml:
version: '3.7'
services:
elasticsearch:
image: elasticsearch:8.6.1
container_name: it-es
volumes:
- ./data:/usr/share/elasticsearch/data
- ./logs:/usr/share/elasticsearch/logs
- ./plugins:/usr/share/elasticsearch/plugins
ports:
- 9200:9200
environment:
node.name: elasticsearch
ES_JAVA_OPTS: -Xms1g -Xmx1g // 這邊通常不建議設置超過總記憶體的50%
http.host: 0.0.0.0
http.port: 9200
transport.host: localhost
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-}
discovery.type: single-node
xpack.security.enabled: false // xpack 設定都先false
xpack.security.http.ssl.enabled: false // xpack 設定都先false
networks:
- elk
restart: unless-stopped
kibana:
image: kibana:8.6.1
container_name: it-kibana
ports:
- 5601:5601
environment:
KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-}
networks:
- elk
depends_on:
- elasticsearch
restart: unless-stopped
networks:
elk:
driver: bridge
volumes:
elasticsearch:
如果有要使用ssl憑證之類的,通常也會再掛載一個certs資料夾,但是這邊都先跳過
並且在ES容器的port中,因為我們是單節點所以只用9200
9200通常就是用來跟外部連接,是Http協議
9300則是TCP協議,節點之間的通訊才需要用到
使用docker compose up -d啟動後,可以直接去看docker kibana容器的log
接著在瀏覽器輸入圖片中的url
因為都沒有設置任何security所以不用驗證enroll token也不用輸入密碼就可以直接進入
進入後我們點選左上角的圖示,會跳出許多選單,我們拉到最下面,找到
Management中的Dev Tools並點進去
此時我們要先來看整個叢集的健康,輸入我們的一條命令
GET /_cluster/health
看到status是green就是成功了
叢集健康狀態|狀態|說明
------------- | ------------- |
red|primary shard有問題|叢集中有不能使用的primary shard,可能有索引的primary shard有問題,或是有node掛掉時,replica shard沒辦法轉成primary shard
yellow|primary shard沒問題但是replica shard有問題。|可以使用GET /_cat/shards?h=index,shard,prirep,state,unassigned.reason來看有哪些複製分片是沒有好好分配的
green|所有分片都沒問題|表示叢集中所有的索引都很健康,不存在缺失或是未分配的分片。
既然我們能寫點東西了,明天就開始來介紹最基礎有關索引跟文檔的語法~