Elasticsearch標(biāo)準(zhǔn)軟件基于Bitnami Elasticsearch 構(gòu)建。當(dāng)前版本為8.11.3
你可以通過輕云UC部署工具直接安裝部署,也可以手動按如下文檔操作,該項目已經(jīng)全面開源,可以從如下環(huán)境獲取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform
簡介
Elasticsearch是一個分布式、可擴(kuò)展、實時的搜索與數(shù)據(jù)分析引擎。它不僅僅只是全文搜索,還支持結(jié)構(gòu)化搜索、數(shù)據(jù)分析、復(fù)雜的語言處理、地理位置和對象間關(guān)聯(lián)關(guān)系等。ES也是使用Java編寫的,ES的底層依賴Lucene,它的內(nèi)部使用Lucene做索引與搜索,它的目的是隱藏Lucene的復(fù)雜性,取而代之的提供一套簡單一致的Restful API。
初始化一個新實例
使用Docker 容器網(wǎng)絡(luò),應(yīng)用程序容器可以輕松訪問容器內(nèi)運行的 Elasticsearch 服務(wù)器。
連接到同一網(wǎng)絡(luò)的容器可以使用容器名稱作為主機(jī)名來相互通信。
使用命令行
第 1 步:創(chuàng)建網(wǎng)絡(luò)
docker network create app-tier --driver bridge
第 2 步:啟動 Elasticsearch 服務(wù)器實例
docker run 添加命令--network app-tier的參數(shù), 將elasticsearch-server容器連接到網(wǎng)絡(luò)app-tier。
docker run -d --name elasticsearch-server \
? ? --network app-tier \
? ? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest
第 3 步:啟動應(yīng)用程序容器
docker run -d --name myapp \
? ? --network app-tier \
? ? YOUR_APPLICATION_IMAGE
重要:
注意替換YOUR_APPLICATION_IMAGE_占位符
在容器中,使用主機(jī)名elasticsearch-server連接到 Elasticsearch 服務(wù)器
使用 Docker Compose 文件
如果未指定,Docker Compose 會自動設(shè)置一個新網(wǎng)絡(luò)并將所有已部署的服務(wù)附加到該網(wǎng)絡(luò)。但是我們將顯式定義一個bridge名為app-tier的新網(wǎng)絡(luò)。在此示例中,我們假設(shè)您希望從您自己的自定義應(yīng)用程序映像連接到 Elasticsearch 服務(wù)器,該映像在以下代碼段中通過服務(wù)名稱進(jìn)行標(biāo)識myapp。
version: '2'
networks:
? app-tier:
? ? driver: bridge
services:
? elasticsearch:
? ? image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest'
? ? networks:
? ? ? - app-tier
? myapp:
? ? image: 'YOUR_APPLICATION_IMAGE'
? ? networks:
? ? ? - app-tier
重要:
注意替換YOUR_APPLICATION_IMAGE_占位符
在容器中,使用主機(jī)名elasticsearch-server連接到 Elasticsearch 服務(wù)器
使用以下命令啟動容器:
docker-compose up -d
配置
環(huán)境變量
當(dāng)您啟動elasticsearch鏡像時,您可以通過在docker-compose文件或docker run命令行上傳遞一個或多個環(huán)境變量來調(diào)整實例的配置。
對于 Docker Compose,在應(yīng)用程序部分下添加變量名稱和值:
elasticsearch:
? ...
? environment:
? ? - ELASTICSEARCH_PORT_NUMBER=9201
? ...
...
對于手動執(zhí)行,增加-e為每個變量和值添加一個選項:
$ docker run -d --name elasticsearch \
? ? -p 9201:9201 --network=elasticsearch_network \
? ? -e ELASTICSEARCH_PORT_NUMBER=9201 \
? ? -v /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data \
? ? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch
可用變量:
BITNAMI_DEBUG:增加初始化日志的詳細(xì)程度。默認(rèn)false
ELASTICSEARCH_EXTRA_FLAGS:elasticsearch守護(hù)進(jìn)程的額外命令行參數(shù)
ELASTICSEARCH_CLUSTER_NAME:Elasticsearch 集群名稱。默認(rèn)值:elasticsearch-cluster
ELASTICSEARCH_CLUSTER_HOSTS:用于設(shè)置集群的elasticsearch主機(jī)列表??捎玫姆指舴麨椤?”、“,”和“;”。沒有默認(rèn)值。
ELASTICSEARCH_CLUSTER_MASTER_HOSTS:符合elasticsearch master資格的主機(jī)列表??捎玫姆指舴麨椤?”、“,”和“;”。如果未提供任何值,它將具有與 相同的值ELASTICSEARCH_CLUSTER_HOSTS。
ELASTICSEARCH_IS_DEDICATED_NODE:Elasticsearch 節(jié)點充當(dāng)“專用節(jié)點”。默認(rèn)值:false
ELASTICSEARCH_NODE_TYPE:充當(dāng)“專用節(jié)點”時的 Elasticsearch 節(jié)點類型。有效值:master、data、coordinating或ingest。
ELASTICSEARCH_NODE_NAME:Elasticsearch 節(jié)點名稱。沒有默認(rèn)值。
ELASTICSEARCH_BIND_ADDRESS:Elasticsearch 綁定的地址/接口。默認(rèn)值:0.0.0.0
ELASTICSEARCH_PORT_NUMBER:Elasticsearch 端口。默認(rèn)值:9200
ELASTICSEARCH_NODE_PORT_NUMBER:Elasticsearch 節(jié)點到節(jié)點端口。默認(rèn)值:9300
ELASTICSEARCH_PLUGINS:逗號、分號或空格分隔的初始化時安裝的插件列表。沒有默認(rèn)值。
ELASTICSEARCH_KEYS:要存儲的以逗號、分號或空格分隔的鍵值對 (key=value) 列表。沒有默認(rèn)值。
ELASTICSEARCH_HEAP_SIZE:用于 Xmx 和 Xms java 堆值的內(nèi)存。默認(rèn)值:1024m
ELASTICSEARCH_FS_SNAPSHOT_REPO_PATH:Elasticsearch 文件系統(tǒng)快照存儲庫路徑。沒有默認(rèn)值。
ELASTICSEARCH_DATA_DIR_LIST:逗號、分號或空格分隔的用于數(shù)據(jù)存儲的目錄列表。沒有默認(rèn)值。
設(shè)置集群
可以使用以下環(huán)境變量設(shè)置集群:
ELASTICSEARCH_CLUSTER_NAME:Elasticsearch 集群名稱。默認(rèn)值:elasticsearch-cluster
ELASTICSEARCH_CLUSTER_HOSTS:用于設(shè)置集群的elasticsearch主機(jī)列表??捎玫姆指舴麨? ', ',' and ';'. No defaults.
ELASTICSEARCH_CLIENT_NODE:Elasticsearch 節(jié)點充當(dāng) Kibana 應(yīng)用程序的“智能路由器”。默認(rèn)值:false
ELASTICSEARCH_NODE_NAME:Elasticsearch 節(jié)點名稱。沒有默認(rèn)值。
ELASTICSEARCH_MINIMUM_MASTER_NODES:法定人數(shù)的最小 Elasticsearch 主節(jié)點。沒有默認(rèn)值。 對于較大的集群,您可以使用以下環(huán)境變量設(shè)置dedicated nodes:
ELASTICSEARCH_IS_DEDICATED_NODE:Elasticsearch 節(jié)點充當(dāng)dedicated nodes。默認(rèn)值: no
ELASTICSEARCH_NODE_TYPE:充當(dāng)dedicated nodes時的 Elasticsearch 節(jié)點類型。有效值:master, data, coordinating or ingest。
ELASTICSEARCH_CLUSTER_MASTER_HOSTS:符合elasticsearch master資格的主機(jī)列表。可用的分隔符為' ', ',' , ';'。如果未提供任何值,它將具有與ELASTICSEARCH_CLUSTER_HOSTS相同的值。
第 1 步:創(chuàng)建新網(wǎng)絡(luò)
docker network create elasticsearch_network
步驟2:創(chuàng)建第一個節(jié)點
docker run --name elasticsearch-node1 \
? --net=elasticsearch_network \
? -p 9200:9200 \
? -e ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster \
? -e ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2 \
? -e ELASTICSEARCH_NODE_NAME=elastic-node1 \
? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest
在上面的命令中,容器被添加到elasticsearch-cluster使用ELASTICSEARCH_CLUSTER_NAME. 該ELASTICSEARCH_CLUSTER_HOSTS參數(shù)設(shè)置設(shè)置集群的節(jié)點的名稱,因此我們需要為第二個節(jié)點啟動其他容器。最后,該ELASTICSEARCH_NODE_NAME參數(shù)允許指定節(jié)點的已知名稱,否則elasticsearch將生成一個隨機(jī)名稱。
步驟 3:創(chuàng)建第二個節(jié)點
docker run --name elasticsearch-node2 \
? --link elasticsearch-node1:elasticsearch-node1 \
? --net=elasticsearch_network \
? -e ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster \
? -e ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2 \
? -e ELASTICSEARCH_NODE_NAME=elastic-node2 \
? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest
在上面的命令中,一個新的elasticsearch節(jié)點被添加到由ELASTICSEARCH_CLUSTER_NAME指示的elasticsearch集群中。
您現(xiàn)在已經(jīng)啟動并運行了一個兩節(jié)點 Elasticsearch 集群,可以通過添加/刪除節(jié)點來擴(kuò)展該集群。
通過 Docker Compose,可以使用以下命令設(shè)置集群配置:
version: '2'
services:
? elasticsearch-node1:
? ? image: registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest
? ? environment:
? ? ? - ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster
? ? ? - ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2
? ? ? - ELASTICSEARCH_NODE_NAME=elastic-node1
? elasticsearch-node2:
? ? image: registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest
? ? environment:
? ? ? - ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster
? ? ? - ELASTICSEARCH_CLUSTER_HOSTS=elasticsearch-node1,elasticsearch-node2
? ? ? - ELASTICSEARCH_NODE_NAME=elastic-node2
配置文件
為了使用自定義配置文件而不是開箱即用的默認(rèn)配置文件,您可以創(chuàng)建一個名為的文件elasticsearch.yml并將其掛載于/opt/bitnami/elasticsearch/config/elasticsearch.yml以覆蓋默認(rèn)配置:
docker run -d --name elasticsearch \
? ? -p 9201:9201 \
? ? -v /path/to/elasticsearch.yml:/opt/bitnami/elasticsearch/config/elasticsearch.yml \
? ? -v /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data \
? ? registry.cn-hangzhou.aliyuncs.com/qingcloudtech/elasticsearch:latest
或者通過更改docker-compose.yml文件:
elasticsearch:
? ...
? volumes:
? ? - /path/to/elasticsearch.yml:/opt/bitnami/elasticsearch/config/elasticsearch.yml
? ? - /path/to/elasticsearch-data-persistence:/bitnami/elasticsearch/data
? ...
請注意,整個配置文件將被提供的默認(rèn)配置文件替換;確保您提供的語法和字段設(shè)置正確且詳盡。
如果您寧愿擴(kuò)展而不是用您的設(shè)置替換默認(rèn)配置,請掛載自定義配置文件到容器/opt/bitnami/elasticsearch/config/my_elasticsearch.yml。
初始化一個新實例
當(dāng)容器第一次執(zhí)行時,它會執(zhí)行/docker-entrypoint-initdb.d目錄下擴(kuò)展名為.sh的文件.
為了將自定義文件放入 Docker 容器中,您可以將它們掛載為卷。
日志
docker logs elasticsearch
或使用 Docker Compose:
docker-compose logs elasticsearch
如果您希望以不同方式使用容器日志,您可以使用該選項配置容器日志記錄驅(qū)動程序。--log-driver在默認(rèn)配置中,docker 使用json-file驅(qū)動程序。
此外,如果您想修改 Elasticsearch 日志記錄配置,可以通過覆蓋該文件來完成/opt/bitnami/elasticsearch/config/log4j2.properties。該文件的語法可以在 Elasticsearch日志記錄文檔中找到。