ElasticSearch 入門指南:從安裝配置到核心概念解析

引言

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ā)者集成和使用。
image.png

本文目標

本文面向初學者,旨在提供一個系統(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。

下載和安裝步驟

  1. 下載 ElasticSearch

    • 訪問 ElasticSearch 官方網站 下載最新版本的安裝包。
    • 選擇適合您操作系統(tǒng)的版本(.zip、.tar.gz、.deb、.rpm 等)。
  2. 安裝 ElasticSearch

    • Windows
      • 解壓下載的 .zip 文件到您希望安裝的目錄。
      • 進入 bin 目錄,運行 elasticsearch.bat 啟動 ElasticSearch。
    • macOS
      • 解壓下載的 .tar.gz 文件。
      • 進入 bin 目錄,運行 ./elasticsearch 啟動 ElasticSearch。
    • Linux
      • 解壓下載的 .tar.gz 文件。
      • 進入 bin 目錄,運行 ./elasticsearch 啟動 ElasticSearch。
      • 或者使用包管理器安裝(.deb、.rpm),具體步驟請參考官方文檔。

驗證安裝

image.png
  1. 啟動 ElasticSearch

    • 按照上述步驟啟動 ElasticSearch。
    • 啟動后,ElasticSearch 將在默認端口 9200 上運行。
  2. 確認安裝成功

    • 打開瀏覽器,訪問 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_hostscluster.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"]

image.png

核心概念

索引(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
    }
    
    
還有 41% 的精彩內容
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
支付 ¥4.99 繼續(xù)閱讀

相關閱讀更多精彩內容

友情鏈接更多精彩內容