当前位置: 首页 > article >正文

Elasticsearch 入门教学:从零开始掌握分布式搜索引擎

引言

Elasticsearch 是一个开源的分布式搜索引擎,基于 Apache Lucene 构建,能够实现近乎实时的数据搜索和分析。它广泛应用于日志分析、全文搜索、数据可视化等场景。本文将带你从零开始学习 Elasticsearch,掌握其基本概念、安装配置、数据操作及搜索功能。

1. Elasticsearch 简介

1.1 什么是 Elasticsearch?

Elasticsearch 是一个分布式的 RESTful 搜索引擎,能够快速地存储、搜索和分析大量数据。它的核心特点包括:

  • 分布式:数据可以分布在多个节点上,支持水平扩展。
  • 实时性:数据几乎可以实时地被索引和搜索。
  • 全文搜索:支持复杂的全文搜索功能。
  • RESTful API:通过 HTTP 接口进行操作,易于集成。

1.2 Elasticsearch 的核心概念

  • 索引(Index):类似于关系数据库中的“数据库”,用于存储相关文档。
  • 类型(Type):在 Elasticsearch 7.x 及之前版本中,索引可以包含多个类型,类似于“表”。但在 7.x 之后,类型逐渐被弃用,建议每个索引只包含一个类型。
  • 文档(Document):索引中的基本数据单元,类似于关系数据库中的“行”。
  • 字段(Field):文档中的属性,类似于关系数据库中的“列”。
  • 分片(Shard):索引可以被分成多个分片,分布在不同节点上,以实现分布式存储和搜索。
  • 副本(Replica):每个分片可以有多个副本,用于提高数据的可用性和容错性。

2. 安装与配置

2.1 安装 Elasticsearch

Elasticsearch 可以在多种操作系统上运行,以下以 Linux 为例介绍安装步骤。

  1. 下载 Elasticsearch

    访问 Elasticsearch 官方下载页面,选择适合的版本进行下载。

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz
    
  2. 解压并安装

    tar -xzf elasticsearch-7.10.1-linux-x86_64.tar.gz
    cd elasticsearch-7.10.1/
    
  3. 启动 Elasticsearch

    ./bin/elasticsearch
    

    默认情况下,Elasticsearch 会在 localhost:9200 上启动。

2.2 配置 Elasticsearch

Elasticsearch 的配置文件位于 config/elasticsearch.yml,常见的配置项包括:

  • 集群名称cluster.name
  • 节点名称node.name
  • 网络绑定地址network.host
  • 端口http.port

例如,修改集群名称:

cluster.name: my_cluster

3. 基本操作

3.1 使用 RESTful API 操作 Elasticsearch

Elasticsearch 提供了丰富的 RESTful API,可以通过 HTTP 请求进行操作。以下是一些常用的操作示例。

3.1.1 创建索引
curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  }
}'
3.1.2 插入文档
curl -X POST "localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d'
{
  "title": "Elasticsearch 入门",
  "content": "这是一篇关于 Elasticsearch 的入门教程。",
  "tags": ["搜索", "教程"]
}'
3.1.3 查询文档
curl -X GET "localhost:9200/my_index/_doc/1"
3.1.4 搜索文档
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "content": "入门"
    }
  }
}'

3.2 使用 Kibana 进行操作

Kibana 是 Elasticsearch 的可视化工具,提供了更友好的界面来操作 Elasticsearch。你可以通过 Kibana 的 Dev Tools 来执行上述的 RESTful API 操作。

4. 进阶操作

4.1 索引管理

Elasticsearch 提供了丰富的索引管理功能,包括索引的创建、删除、映射定义等。

4.1.1 删除索引
curl -X DELETE "localhost:9200/my_index"
4.1.2 定义映射

映射(Mapping)用于定义索引中的字段类型。

curl -X PUT "localhost:9200/my_index" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "content": { "type": "text" },
      "tags": { "type": "keyword" }
    }
  }
}'

4.2 复杂查询

Elasticsearch 支持多种复杂的查询方式,如布尔查询、范围查询、聚合查询等。

4.2.1 布尔查询
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {
      "must": [
        { "match": { "content": "入门" }},
        { "match": { "tags": "教程" }}
      ]
    }
  }
}'
4.2.2 聚合查询
curl -X GET "localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
  "aggs": {
    "popular_tags": {
      "terms": { "field": "tags" }
    }
  }
}'

5. 总结

通过本文,你已经了解了 Elasticsearch 的基本概念、安装配置、数据操作及搜索功能。Elasticsearch 是一个功能强大的搜索引擎,适用于各种数据搜索和分析场景。接下来,你可以进一步学习 Elasticsearch 的高级功能,如集群管理、性能优化等。

希望这篇入门教程对你有所帮助,祝你在 Elasticsearch 的学习和使用中取得更多成果!


参考资源

  • Elasticsearch 官方文档
  • Kibana 官方文档

相关工具

  • Kibana
  • Logstash
  • Beats

如果你有任何问题或建议,欢迎在评论区留言!


http://www.kler.cn/a/579869.html

相关文章:

  • ESP32的IDF开发学习-移植lvgl并显示简单ui(以gc9a01为例)
  • 内网安全-横向移动PTH 哈希PTT 票据PTK 密匙Kerberos密码喷射
  • 蓝桥杯备考:离散化详解
  • 数据结构:有序表的插入
  • MongoD和关系型数据库相关概念的对应
  • PyTorch 张量数据类型定义和转换
  • 【Linux内核系列】:深入理解缓冲区
  • 在ubuntu 24 命令行 下,制作无人值守ubuntu-24.04.2-desktop 桌面版安装U盘
  • 《深入理解Linux:高效崩溃分析与实时栈回溯技巧》
  • 操作系统知识点25
  • OCR图片识别原理
  • C++:面向对象之多态(运算符重载)
  • AF3 squeeze_features函数解读
  • Vue3 Pinia 符合直觉的Vue.js状态管理库
  • 超越经典:量子通信技术的发展与未来
  • MySQL8.0窗口函数
  • HTML 表格详解(简单易懂较详细)
  • 云服务运维智能时代:阿里云操作系统控制台
  • 利用paddleocr解决图片旋转问题
  • 死锁的产生以及如何避免