引言
ElasticSearch 簡介
ElasticSearch 是一個開源的搜索和分析引擎,基于 Apache Lucene 構建。它旨在提供高效的全文搜索、實時數(shù)據(jù)分析和可擴展性。ElasticSearch 由 Shay Banon 于 2010 年創(chuàng)建,最初是為了解決大規(guī)模數(shù)據(jù)搜索的問題。隨著時間的推移,它逐漸發(fā)展成為一個功能強大的分布式系統(tǒng),廣泛應用于日志分析、監(jiān)控、推薦系統(tǒng)等領域。
為什么選擇 ElasticSearch
ElasticSearch 因其以下優(yōu)勢而備受歡迎:
- 全文搜索:ElasticSearch 提供強大的全文搜索功能,支持復雜的查詢和過濾。
- 實時數(shù)據(jù)分析:它能夠快速處理和分析大量數(shù)據(jù),提供近乎實時的搜索和分析結果。
- 可擴展性:ElasticSearch 采用分布式架構,可以輕松擴展以處理大規(guī)模數(shù)據(jù)。
- 易用性:提供 RESTful API 接口,方便開發(fā)者集成和使用。

本文目標
本文面向初學者,旨在提供一個系統(tǒng)且易于理解的 ElasticSearch 入門指南。我們將從環(huán)境搭建開始,逐步介紹核心概念和基礎操作,幫助讀者快速掌握 ElasticSearch 的基本用法。
安裝 ElasticSearch
系統(tǒng)要求
在安裝 ElasticSearch 之前,請確保您的系統(tǒng)滿足以下要求:
- 操作系統(tǒng):ElasticSearch 支持 Windows、macOS 和 Linux。
- Java 版本:ElasticSearch 7.x 及以上版本需要 Java 8 或更高版本。建議使用 Oracle JDK 或 OpenJDK。
下載和安裝步驟
-
下載 ElasticSearch:
- 訪問 ElasticSearch 官方網站 下載最新版本的安裝包。
- 選擇適合您操作系統(tǒng)的版本(.zip、.tar.gz、.deb、.rpm 等)。
-
安裝 ElasticSearch:
-
Windows:
- 解壓下載的 .zip 文件到您希望安裝的目錄。
- 進入
bin目錄,運行elasticsearch.bat啟動 ElasticSearch。
-
macOS:
- 解壓下載的 .tar.gz 文件。
- 進入
bin目錄,運行./elasticsearch啟動 ElasticSearch。
-
Linux:
- 解壓下載的 .tar.gz 文件。
- 進入
bin目錄,運行./elasticsearch啟動 ElasticSearch。 - 或者使用包管理器安裝(.deb、.rpm),具體步驟請參考官方文檔。
-
Windows:
驗證安裝

-
啟動 ElasticSearch:
- 按照上述步驟啟動 ElasticSearch。
- 啟動后,ElasticSearch 將在默認端口 9200 上運行。
-
確認安裝成功:
打開瀏覽器,訪問
http://localhost:9200。-
如果看到類似以下的 JSON 響應,說明安裝成功:
{ "name": "your-node-name", "cluster_name": "elasticsearch", "cluster_uuid": "your-cluster-uuid", "version": { "number": "7.x.x", "build_flavor": "default", "build_type": "tar", "build_hash": "your-build-hash", "build_date": "your-build-date", "build_snapshot": false, "lucene_version": "8.x.x", "minimum_wire_compatibility_version": "6.x.x", "minimum_index_compatibility_version": "6.x.x" }, "tagline": "You Know, for Search" }
配置 ElasticSearch
基本配置文件介紹
ElasticSearch 的主要配置文件是 elasticsearch.yml,位于安裝目錄的 config 文件夾中。該文件包含了 ElasticSearch 的各種設置,如集群名稱、節(jié)點名稱、網絡配置等。
網絡配置
要配置 ElasticSearch 的網絡設置,請編輯 elasticsearch.yml 文件:
-
IP 地址:設置
network.host為您希望 ElasticSearch 監(jiān)聽的 IP 地址。默認值為localhost。 -
端口:設置
http.port為 ElasticSearch 監(jiān)聽的端口。默認值為9200。
例如:
network.host: 0.0.0.0
http.port: 9200
集群配置(可選)
對于初學者,單節(jié)點配置通常就足夠了。如果您對集群配置感興趣,可以在 elasticsearch.yml 中設置以下參數(shù):
-
集群名稱:
cluster.name用于標識集群。 -
節(jié)點名稱:
node.name用于標識節(jié)點。 -
發(fā)現(xiàn)設置:
discovery.seed_hosts和cluster.initial_master_nodes用于配置集群的發(fā)現(xiàn)和選舉。
例如:
cluster.name: my-cluster
node.name: node-1
discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node-1", "node-2"]

核心概念
索引(Index)
定義索引及其在 ElasticSearch 中的作用
索引(Index)是 ElasticSearch 中存儲數(shù)據(jù)的邏輯命名空間,類似于關系型數(shù)據(jù)庫中的數(shù)據(jù)庫。它包含一組具有相似結構的文檔。每個索引可以有自己的設置和映射。
演示創(chuàng)建、查看和刪除索引的方法
-
創(chuàng)建索引:
curl -X PUT "http://localhost:9200/my_index"響應:
{"acknowledged":true,"shards_acknowledged":true,"index":"my_index"} -
查看索引:
curl -X GET "http://localhost:9200/_cat/indices?v"響應:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open my_index 1a2b3c4d5e6f7g8h9i0j 1 1 0 0 230b 230b -
刪除索引:
curl -X DELETE "http://localhost:9200/my_index"響應:
{"acknowledged":true}
文檔(Document)
介紹文檔的 JSON 結構及其意義
文檔(Document)是 ElasticSearch 中的基本數(shù)據(jù)單元,以 JSON 格式存儲。每個文檔都屬于一個索引,并具有唯一的 ID。文檔由字段(fields)組成,每個字段都有名稱和值。
展示添加、更新和刪除文檔的操作
-
添加文檔:
curl -X POST "http://localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d' { "name": "John Doe", "age": 30, "city": "New York" }'響應:
{ "_index": "my_index", "_type": "_doc", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 } -
更新文檔:
curl -X POST "http://localhost:9200/my_index/_update/1" -H 'Content-Type: application/json' -d' { "doc": { "age": 31 } }'響應:
{ "_index": "my_index", "_type": "_doc", "_id": "1", "_version": 2, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 }