Elasticsearch標(biāo)準(zhǔn)軟件基于Bitnami Elasticsearch 構(gòu)建。當(dāng)前版本為8.11.3
你可以通過輕云UC部署工具直接安裝部署,也可以手動(dòng)按如下文檔操作,該項(xiàng)目已經(jīng)全面開源,可以從如下環(huán)境獲取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform
簡介
Elasticsearch是一個(gè)分布式、可擴(kuò)展、實(shí)時(shí)的搜索與數(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。
初始化一個(gè)新實(shí)例
使用Docker 容器網(wǎng)絡(luò),應(yīng)用程序容器可以輕松訪問容器內(nèi)運(yùn)行的 Elasticsearch 服務(wù)器。
連接到同一網(wǎng)絡(luò)的容器可以使用容器名稱作為主機(jī)名來相互通信。
使用命令行
第 1 步:創(chuàng)建網(wǎng)絡(luò)
docker network create app-tier --driver bridge
第 2 步:啟動(dòng) Elasticsearch 服務(wù)器實(shí)例
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 步:啟動(dòng)應(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 會(huì)自動(dòng)設(shè)置一個(gè)新網(wǎng)絡(luò)并將所有已部署的服務(wù)附加到該網(wǎng)絡(luò)。但是我們將顯式定義一個(gè)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ù)器
使用以下命令啟動(dòng)容器:
docker-compose up -d
配置
環(huán)境變量
當(dāng)您啟動(dòng)elasticsearch鏡像時(shí),您可以通過在docker-compose文件或docker run命令行上傳遞一個(gè)或多個(gè)環(huán)境變量來調(diào)整實(shí)例的配置。
- 對于 Docker Compose,在應(yīng)用程序部分下添加變量名稱和值:
elasticsearch:
...
environment:
- ELASTICSEARCH_PORT_NUMBER=9201
...
...
- 對于手動(dòng)執(zhí)行,增加-e為每個(gè)變量和值添加一個(gè)選項(xiàng):
$ 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é)點(diǎn)充當(dāng)“專用節(jié)點(diǎn)”。默認(rèn)值:false
- ELASTICSEARCH_NODE_TYPE:充當(dāng)“專用節(jié)點(diǎn)”時(shí)的 Elasticsearch 節(jié)點(diǎn)類型。有效值:master、data、coordinating或ingest。
- ELASTICSEARCH_NODE_NAME:Elasticsearch 節(jié)點(diǎn)名稱。沒有默認(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é)點(diǎn)到節(jié)點(diǎn)端口。默認(rèn)值:9300
- ELASTICSEARCH_PLUGINS:逗號、分號或空格分隔的初始化時(shí)安裝的插件列表。沒有默認(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é)點(diǎn)充當(dāng) Kibana 應(yīng)用程序的“智能路由器”。默認(rèn)值:false
ELASTICSEARCH_NODE_NAME:Elasticsearch 節(jié)點(diǎn)名稱。沒有默認(rèn)值。
ELASTICSEARCH_MINIMUM_MASTER_NODES:法定人數(shù)的最小 Elasticsearch 主節(jié)點(diǎn)。沒有默認(rèn)值。
對于較大的集群,您可以使用以下環(huán)境變量設(shè)置dedicated nodes:ELASTICSEARCH_IS_DEDICATED_NODE:Elasticsearch 節(jié)點(diǎn)充當(dāng)dedicated nodes。默認(rèn)值: no
ELASTICSEARCH_NODE_TYPE:充當(dāng)dedicated nodes時(shí)的 Elasticsearch 節(jié)點(diǎn)類型。有效值: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)建第一個(gè)節(jié)點(diǎn)
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é)點(diǎn)的名稱,因此我們需要為第二個(gè)節(jié)點(diǎn)啟動(dòng)其他容器。最后,該ELASTICSEARCH_NODE_NAME參數(shù)允許指定節(jié)點(diǎn)的已知名稱,否則elasticsearch將生成一個(gè)隨機(jī)名稱。
步驟 3:創(chuàng)建第二個(gè)節(jié)點(diǎn)
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
在上面的命令中,一個(gè)新的elasticsearch節(jié)點(diǎn)被添加到由ELASTICSEARCH_CLUSTER_NAME指示的elasticsearch集群中。
您現(xiàn)在已經(jīng)啟動(dòng)并運(yùn)行了一個(gè)兩節(jié)點(diǎn) Elasticsearch 集群,可以通過添加/刪除節(jié)點(diǎn)來擴(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)建一個(gè)名為的文件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
...
請注意,整個(gè)配置文件將被提供的默認(rèn)配置文件替換;確保您提供的語法和字段設(shè)置正確且詳盡。
如果您寧愿擴(kuò)展而不是用您的設(shè)置替換默認(rèn)配置,請掛載自定義配置文件到容器/opt/bitnami/elasticsearch/config/my_elasticsearch.yml。
初始化一個(gè)新實(shí)例
當(dāng)容器第一次執(zhí)行時(shí),它會(huì)執(zhí)行/docker-entrypoint-initdb.d目錄下擴(kuò)展名為.sh的文件.
為了將自定義文件放入 Docker 容器中,您可以將它們掛載為卷。
日志
docker logs elasticsearch
或使用 Docker Compose:
docker-compose logs elasticsearch
如果您希望以不同方式使用容器日志,您可以使用該選項(xiàng)配置容器日志記錄驅(qū)動(dòng)程序。--log-driver在默認(rèn)配置中,docker 使用json-file驅(qū)動(dòng)程序。
此外,如果您想修改 Elasticsearch 日志記錄配置,可以通過覆蓋該文件來完成/opt/bitnami/elasticsearch/config/log4j2.properties。該文件的語法可以在 Elasticsearch日志記錄文檔中找到。