首頁 > 軟體

使用Docker Compose搭建部署ElasticSearch的設定過程

2022-02-18 10:03:23

什麼是 Elasticsearch?

  Elasticsearch 是一個分散式的開源搜尋和分析引擎,適用於所有型別的資料,包括文字、數位、地理空間、結構化和非結構化資料。Elasticsearch 在Apache Lucene 的基礎上開發而成,由 Elasticsearch N.V.(即現在的 Elastic)於 2010 年首次釋出。Elasticsearch 以其簡單的 REST 風格 API、分散式特性、速度和可延伸性而聞名,是 Elastic Stack 的核心元件;Elastic Stack 是適用於資料採集、充實、儲存、分析和視覺化的一組開源工具。人們通常將Elastic Stack 稱為 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列豐富的輕量型資料採集代理,這些代理統稱為Beats,可用來向 Elasticsearch 傳送資料。

Elasticsearch 的用途是什麼?

Elasticsearch 在速度和可延伸性方面都表現出色,而且還能夠索引多種型別的內容,這意味著其可用於多種用例:

  • 應用程式搜尋
  • 網站搜尋
  • 企業搜尋
  • 紀錄檔處理和分析
  • 基礎設施指標和容器監測
  • 應用程式效能監測
  • 地理空間資料分析和視覺化
  • 安全分析
  • 業務分析 

Elasticsearch 的工作原理是什麼?

  原始資料會從多個來源(包括紀錄檔、系統指標和網路應用程式)輸入到 Elasticsearch 中。資料採集指在 Elasticsearch 中進行索引之前解析、標準化並充實這些原始資料的過程。這些資料在 Elasticsearch 中索引完成之後,使用者便可針對他們的資料執行復雜的查詢,並使用聚合來檢索自身資料的複雜彙總。在 Kibana 中,使用者可以基於自己的資料建立強大的視覺化,分享儀表板,並對 Elastic Stack 進行管理。 

Elasticsearch 索引是什麼?

  Elasticsearch 索引指相互關聯的檔案集合。Elasticsearch 會以 JSON 檔案的形式儲存資料。每個檔案都會在一組鍵(欄位或屬性的名稱)和它們對應的值(字串、數位、布林值、日期、數值組、地理位置或其他型別的資料)之間建立聯絡。

  Elasticsearch 使用的是一種名為倒排索引的資料結構,這一結構的設計可以允許十分快速地進行全文字搜尋。倒排索引會列出在所有檔案中出現的每個特有詞彙,並且可以找到包含每個詞彙的全部檔案。

  在索引過程中,Elasticsearch 會儲存檔案並構建倒排索引,這樣使用者便可以近實時地對檔案資料進行搜尋。索引過程是在索引 API 中啟動的,通過此API 您既可向特定索引中新增 JSON 檔案,也可更改特定索引中的 JSON 檔案。

說明

由於我本機設定較低,無法開啟多臺虛擬機器器,ES的叢集需要用到不同的ip,故而只搭建單機,不做叢集。

一、目錄準備

mkdir /docker/es
mkdir /docker/es/data
mkdir /docker/es/config
mkdir /docker/es/plugins

二、es設定準備

cd /docker/es
vi elasticsearch.yml

使用以下設定:

# 叢集名稱
cluster.name: elasticsearch-cluster
# 節點名稱
node.name: es-node-1
# 繫結host,0.0.0.0代表當前節點的ip
network.host: 0.0.0.0
# 設定其它節點和該節點互動的ip地址,如果不設定它會自動判斷,值必須是個真實的ip地址(本機ip)
network.publish_host: 192.168.200.135
# 設定對外服務的http埠,預設為9200
http.port: 9200
# 設定節點間互動的tcp埠,預設是9300
transport.tcp.port: 9300
# 是否支援跨域,預設為false
http.cors.enabled: true
# 當設定允許跨域,預設為*,表示支援所有域名,如果我們只是允許某些網站能存取,那麼可以使用正規表示式。比如只允許本地地址。 /https?://localhost(:[0-9]+)?/
http.cors.allow-origin: "*"
# 表示這個節點是否可以充當主節點
node.master: true
# 是否充當資料節點
node.data: true
# 所有主從節點ip:port
#discovery.seed_hosts: ["192.168.200.135:9300"]  #本地只有一個節點,無法正常啟動,先註釋
# 這個引數決定了在選主過程中需要 有多少個節點通訊  預防腦裂 N/2+1
discovery.zen.minimum_master_nodes: 1
#初始化主節點
#cluster.initial_master_nodes: ["es-node-1"]  #本地只有一個節點,無法正常啟動,先註釋

三、準備docker-compose.yml

vi docker-compose.yml

內容如下:

version: '3'

services:
 elasticsearch:
  image: elasticsearch:6.8.13
  restart: always  
  hostname: es1
  container_name: es-single
  volumes:
   - /docker/es/data:/usr/share/elasticsearch/data
   - /docker/es/plugins:/usr/share/elasticsearch/plugins
   - /docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  environment:
   - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
   - discovery.type=single-node
  ports:
    - '9200:9200'     #java、叢集通訊埠
    - '9300:9300'     #http通訊埠
  privileged: true    #環境變數

四、啟動容器

docker-compose up -d

五、檢視

docker-compose ps

如果啟動是吧,可以使用docker container logs 容器id/es-single logs 檢視啟動紀錄檔

參考:

docker部署redis/mongodb/rabbitmq中的es小節

如果出現啟動紀錄檔中出現java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes,需要給data目錄設定許可權 chmod 777 /docker/es/data

到此這篇關於使用DockerCompose搭建部署ElasticSearch的文章就介紹到這了,更多相關DockerCompose部署ElasticSearch內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com