ElasticSearch 入门指南:从安装配置到核心概念解析

引言

ElasticSearch 简介

ElasticSearch 是一个开源的搜索和分析引擎,基于 Apache Lucene 构建。它旨在提供高效的全文搜索、实时数据分析和可扩展性。ElasticSearch 由 Shay Banon 于 2010 年创建,最初是为了解决大规模数据搜索的问题。随着时间的推移,它逐渐发展成为一个功能强大的分布式系统,广泛应用于日志分析、监控、推荐系统等领域。

为什么选择 ElasticSearch

ElasticSearch 因其以下优势而备受欢迎:

  • 全文搜索:ElasticSearch 提供强大的全文搜索功能,支持复杂的查询和过滤。
  • 实时数据分析:它能够快速处理和分析大量数据,提供近乎实时的搜索和分析结果。
  • 可扩展性:ElasticSearch 采用分布式架构,可以轻松扩展以处理大规模数据。
  • 易用性:提供 RESTful API 接口,方便开发者集成和使用。
image.png

本文目标

本文面向初学者,旨在提供一个系统且易于理解的 ElasticSearch 入门指南。我们将从环境搭建开始,逐步介绍核心概念和基础操作,帮助读者快速掌握 ElasticSearch 的基本用法。


安装 ElasticSearch

系统要求

在安装 ElasticSearch 之前,请确保您的系统满足以下要求:

  • 操作系统:ElasticSearch 支持 Windows、macOS 和 Linux。
  • Java 版本:ElasticSearch 7.x 及以上版本需要 Java 8 或更高版本。建议使用 Oracle JDK 或 OpenJDK。

下载和安装步骤

  1. 下载 ElasticSearch

    • 访问 ElasticSearch 官方网站 下载最新版本的安装包。
    • 选择适合您操作系统的版本(.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 的各种设置,如集群名称、节点名称、网络配置等。

网络配置

要配置 ElasticSearch 的网络设置,请编辑 elasticsearch.yml 文件:

  • IP 地址:设置 network.host 为您希望 ElasticSearch 监听的 IP 地址。默认值为 localhost
  • 端口:设置 http.port 为 ElasticSearch 监听的端口。默认值为 9200

例如:

network.host: 0.0.0.0
http.port: 9200

集群配置(可选)

对于初学者,单节点配置通常就足够了。如果您对集群配置感兴趣,可以在 elasticsearch.yml 中设置以下参数:

  • 集群名称cluster.name 用于标识集群。
  • 节点名称node.name 用于标识节点。
  • 发现设置discovery.seed_hostscluster.initial_master_nodes 用于配置集群的发现和选举。

例如:

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 中存储数据的逻辑命名空间,类似于关系型数据库中的数据库。它包含一组具有相似结构的文档。每个索引可以有自己的设置和映射。

演示创建、查看和删除索引的方法

  • 创建索引

    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 中的基本数据单元,以 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% 的精彩内容
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥4.99 继续阅读

推荐阅读更多精彩内容