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

Elasticsearch零基础入门:从安装到入门

目录

一、Elasticsearch简介

二、环境快速搭建

1. 单节点本地部署(Docker版)

2. 验证安装

三、核心概念图解

与传统数据库对比

架构概念说明

四、REST API基础操作

1. 索引管理

2. 文档CRUD操作

五、基础搜索实战

1. 全文搜索

2. 精确匹配

3. 范围查询

4. 组合查询

六、常用辅助工具

1. Kibana Dev Tools

2. Cerebro集群管理工具

七、新手常见问题

1. 索引创建失败

2. 字段类型不匹配

八、下一步学习建议


一、Elasticsearch简介

Elasticsearch是一个开源的分布式搜索和分析引擎,基于Apache Lucene构建。它能实现:

  • 实时数据搜索

  • 复杂数据分析

  • 海量数据存储(PB级)

核心特性

  • 分布式架构

  • RESTful API

  • 近实时搜索(NRT)

  • 多租户支持

二、环境快速搭建

1. 单节点本地部署(Docker版)

# 拉取镜像(以8.9.0版本为例)
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.9.0

# 启动容器(开发模式)
docker run -d --name es-node01 \
  -p 9200:9200 -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
  elasticsearch:8.9.0

2. 验证安装

访问 http://localhost:9200 看到如下响应说明成功:

{
  "name" : "es-node01",
  "cluster_name" : "docker-cluster",
  "version" : {
    "number" : "8.9.0",
    "build_flavor" : "default"
  },
  "tagline" : "You Know, for Search"
}
 

三、核心概念图解

与传统数据库对比

SQL术语Elasticsearch术语
DatabaseIndex
TableType(已废弃)
RowDocument
ColumnField
SchemaMapping

架构概念说明

  • Node:运行ES实例的服务器

  • Cluster:多个节点的集合

  • Shard:索引的分片(默认主分片数:1)

  • Replica:分片的副本(默认副本数:1)

四、REST API基础操作

1. 索引管理

创建索引(包含自定义mapping):

PUT /books
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "author": { "type": "keyword" },
      "price": { "type": "double" },
      "publish_date": { "type": "date" }
    }
  }
}

查看索引信息

GET /books/_settings
GET /books/_mapping

2. 文档CRUD操作

插入文档

POST /books/_doc/1
{
  "title": "Elasticsearch权威指南",
  "author": "Clinton Gormley",
  "price": 89.90,
  "publish_date": "2015-01-01"
}

查询文档

GET /books/_doc/1

更新文档

POST /books/_update/1
{
  "doc": {
    "price": 79.90
  }
}

删除文档

DELETE /books/_doc/1
 

五、基础搜索实战

1. 全文搜索

GET /books/_search
{
  "query": {
    "match": {
      "title": "权威指南"
    }
  }
}

2. 精确匹配

GET /books/_search
{
  "query": {
    "term": {
      "author.keyword": "Clinton Gormley"
    }
  }
}

3. 范围查询

GET /books/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 50,
        "lte": 100
      }
    }
  }
}

4. 组合查询

GET /books/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "指南" } }
      ],
      "filter": [
        { "range": { "price": { "lte": 100 } } }
      ]
    }
  }
}
 

六、常用辅助工具

1. Kibana Dev Tools

提供可视化交互界面,内置控制台可直接执行ES查询:

2. Cerebro集群管理工具

  • 实时查看集群状态

  • 执行索引管理操作

  • 节点监控

七、新手常见问题

1. 索引创建失败

错误现象

{
  "error": {
    "root_cause": [
      {
        "type": "resource_already_exists_exception",
        "reason": "index [books/xxxx] already exists"
      }
    ]
  }
}

解决方案

  • 删除已有索引:DELETE /books

  • 修改索引名称重新创建

2. 字段类型不匹配

错误示例

{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "failed to parse field [price] of type [double]"
      }
    ]
  }
}

预防措施

  • 提前定义好mapping

  • 使用ignore_malformed参数忽略格式错误

八、下一步学习建议

  1. 掌握Analyzer分词原理

  2. 学习聚合(Aggregation)分析

  3. 了解索引生命周期管理(ILM)

  4. 探索Elastic Stack生态(Logstash、Beats)


资源推荐

  • 官方入门教程

  • Elastic中文社区

  • 《Elasticsearch实战》

相关文章:

  • 紫光展锐社招
  • 详解MySQL的事务实现机制
  • 网页性能优化中 有一条叫做“避免使用未合成的动画”,请问该如何理解?
  • 【技术选型】三大 Python Web 框架全面对比
  • SQL Server数据库表删除分区
  • self Attention为何除以根号dk?(全新角度)
  • 【入门初级篇】布局类组件的使用(2)
  • IRF拆除
  • android facebook 分享到 messenger
  • XSS跨站脚本攻击漏洞(Cross Site Scripting)
  • Java 的 正则表达式
  • 网络爬虫【爬虫库request】
  • QT编程之数据库开发
  • Mysql的安装配置
  • 数据结构——顺序栈seq_stack
  • MySQL事务日志详解:Redo Log 和 Undo Log 的核心机制
  • 【大模型理论篇】CogVLM:多模态预训练语言模型
  • 详细说明脚本评估和耗时较长的任务
  • npm报错‘proxy‘ config is set properxy. See: ‘npm help config‘
  • 【负载均衡系列】HAProxy
  • 小米SU7 Ultra风波升级:数百名车主要求退车,车主喊话雷军“保持真诚”
  • “海豚音”依旧互动更多,玛丽亚·凯莉本周来沪开唱
  • 为何发胖?如何减肥?一个医学体重管理中心的探索启示
  • 苹果Safari浏览器上的搜索量首次下降
  • 牛市早报|央行宣布降准降息,公募基金改革最新方案落地
  • 现场|万米云端,遇见上博