Elasticsearch 入门教程:基础概念与安装指南

阅读:6 2025-03-13

一、什么是 Elasticsearch?

Elasticsearch 是一个开源的分布式搜索引擎,基于 Apache Lucene 构建,能够实现以下功能:
✅ 全文搜索
✅ 结构化搜索
✅ 数据分析
✅ 实时数据处理

Elasticsearch 最早由 Shay Banon 在 2010 年发布,最初是为了满足快速搜索的需求。由于其出色的性能和扩展性,Elasticsearch 已成为大数据领域中常用的搜索与分析工具之一。


/uploads/image/2025/03/13/dbced619079d6f99b4fa6e3eb5c56af7.jpg

二、Elasticsearch 的核心概念

在使用 Elasticsearch 之前,了解以下几个核心概念会帮助你快速上手:

1. 索引(Index)

  • 索引相当于数据库中的 "表"

  • 每个索引由多个文档组成

  • 每个索引都有一个唯一的名称

👉 示例

PUT /my_index{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }}

上述命令创建了一个名为 my_index 的索引,包含 1 个分片(Shard)和 1 个副本(Replica)。


2. 文档(Document)

  • 文档是索引中的数据项,类似于数据库中的一行记录

  • 文档以 JSON 格式存储

  • 每个文档有一个唯一的 ID

👉 示例

POST /my_index/_doc/1{
  "title": "Elasticsearch入门",
  "author": "码农资讯网",
  "published_date": "2025-03-11"}

这将创建一个新的文档,存储在 my_index 索引中,ID 为 1


3. 类型(Type)

  • Elasticsearch 7.x 之后已废弃 Type 概念

  • 以前一个索引可以包含多个 Type(类似于关系型数据库中的表)

  • 现在每个索引只能包含一种类型的数据


4. 映射(Mapping)

  • 映射是索引中字段的定义

  • 定义字段的类型和属性(如字符串、日期、数字等)

👉 示例

PUT /my_index/_mapping{
  "properties": {
    "title": {
      "type": "text"
    },
    "author": {
      "type": "keyword"
    },
    "published_date": {
      "type": "date"
    }
  }}

上述代码定义了 my_index 的映射结构。


5. 分片(Shard)与副本(Replica)

  • 分片(Shard):

    • Elasticsearch 将索引拆分成多个分片

    • 每个分片都可以独立存储和查询

    • 可在不同节点中进行分布式存储

  • 副本(Replica):

    • 每个分片可以创建多个副本

    • 提高了数据的冗余性和查询效率


三、Elasticsearch 的特点

实时搜索 – 在数据插入或更新后,几乎可以立即进行搜索
分布式架构 – 能够在集群中水平扩展
高性能 – 支持 PB 级别数据的秒级查询
RESTful API – 提供完整的 RESTful 接口,方便集成和开发
全文检索 – 支持复杂的查询条件,支持分词、模糊查询、多字段查询等


四、安装 Elasticsearch

1. 安装 Java 环境

Elasticsearch 基于 Java 开发,因此需要安装 Java 运行环境(JDK):

sudo apt update
sudo apt install openjdk-11-jdk -y

查看 Java 版本:

java -version

2. 下载并安装 Elasticsearch

① 下载安装包
进入 Elasticsearch 官方下载地址 下载最新版本:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.3-linux-x86_64.tar.gz

② 解压安装包

tar -xzf elasticsearch-8.11.3-linux-x86_64.tar.gzcd elasticsearch-8.11.3

3. 启动 Elasticsearch

使用以下命令启动 Elasticsearch:

./bin/elasticsearch

在浏览器中访问:

http://localhost:9200

如果出现如下内容,说明 Elasticsearch 启动成功:

{
  "name" : "your-server-name",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "x3Hyfg3TTe-wjSK3f9-dFw",
  "version" : {
    "number" : "8.11.3",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "cf29e13",
    "build_date" : "2025-03-11T10:24:33.123456Z",
    "build_snapshot" : false,
    "lucene_version" : "9.8.0",
    "minimum_wire_compatibility_version" : "8.0.0",
    "minimum_index_compatibility_version" : "8.0.0"
  }}

4. 配置开机自启动

为了确保 Elasticsearch 在服务器重启后自动运行,可以将其设置为系统服务:

sudo cp -f elasticsearch.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

五、Elasticsearch 常用操作

1. 创建索引

curl -X PUT "localhost:9200/my_index"

2. 插入数据

curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{
  "title": "Elasticsearch基础教程",
  "author": "码农资讯网",
  "published_date": "2025-03-11"
}'

3. 查询数据

curl -X GET "localhost:9200/my_index/_search?q=title:Elasticsearch"

4. 删除索引

curl -X DELETE "localhost:9200/my_index"

六、常见问题

🔹 1. Elasticsearch 启动失败?

  • 查看日志文件:

cat logs/elasticsearch.log
  • 可能是由于内存不足、端口冲突或 Java 版本不兼容。

🔹 2. 9200 端口被占用?

  • 查看占用端口的进程:

sudo netstat -tulnp | grep 9200
  • 结束进程:

sudo kill -9 PID

🔹 3. Elasticsearch 无法写入数据?

  • 检查文件权限:

chmod -R 777 elasticsearch-8.11.3

七、总结

Elasticsearch 是一个强大的分布式搜索引擎,具备实时搜索、高性能、可扩展等特点。通过本教程,你已经掌握了 Elasticsearch 的核心概念、安装配置以及常用操作。

👉 快去用 Elasticsearch 打造自己的搜索引擎吧! 😎


声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!

搜索