尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ElasticSearch 常见用法
一、ElasticSearch 整体介绍1.1 是什么ElasticSearch(简称 ES)是分布式、RESTful 风格的全文搜索引擎,底层基于 Lucene。Lucene:底层检索库,只提供 jar 包,复杂,不支持分布式ES:对 Lucene 封装,提供 HTTP‑REST API、Java 客户端,开箱即用,天然分布式集群。适用场景:全文检索、日志分析(ELK 栈)、商品搜索、APP 检索、日志埋点、数据分析。 不适合:大量实时更新、强事务、高频写入。1.2 ES 核心概念图解(面试必背,可手画)ES7.x 之后:移除 Type,一个索引就对应一个 type,一个索引就是一堆文档plaintext【集群 Cluster】 ├─节点 Node1(主节点/数据节点) │ ├─索引 Index(类比Mysql数据库 database) │ │ ├─分片 Shard(分片,分为主分片primary、副本replica) │ │ │ └─段 Segment(Lucene底层,不可修改) │ │ └─文档 Document(类比mysql row行,json格式) │ │ └─字段 Field(类比mysql column列) ├─节点 Node2 └─节点 Node3表格ES7.x 概念MySQL 类比Cluster 集群数据库实例Index 索引Database 数据库Document 文档Row 一行数据Field 字段Column 列Mapping 映射Table 表结构(字段类型、分词器)Shard 分片分库分表Replica 副本备份⚠️ES7 重要变化:Type 被废弃,一个索引只有一个虚拟_doc类型,不要再写自定义 type主分片数创建索引后不可修改,副本数可以随时修改。1.3 分片原理图解(面试高频)plaintext索引创建:3主分片,1副本,共6个分片 Primary(主分片): P0 P1 P2 Replica(副本): R0 R1 R2 集群3个节点部署: Node1: P0 R1 Node2: P1 R2 Node3: P2 R0 规则: 1. 主分片和它的副本**不能放在同一个节点**(节点宕机,副本失效) 2. 写请求只写到【主分片】,同步复制到副本 3. 读请求:可以读主分片,也可以读副本,负载均衡 4. 主分片数量索引创建完不能修改!只能重建索引迁移数据主分片:数据真实写入,处理写请求;副本分片:备份,分担读压力,主分片挂掉,副本升级为主分片,保证高可用。1.4 倒排索引(核心!面试必考)ES 底层靠倒排索引实现极速全文检索,正排索引就是普通数据库。正排索引(Mysql)文档 ID → 完整内容plaintextdoc1: "小米手机很好用" doc2: "华为手机性价比高" doc3: "小米手机性价比高"倒排索引 ES分词词条 → 关联文档 ID 列表表格Term 词条文档 ID小米doc1,doc3手机doc1,doc2,doc3华为doc2性价比doc2,doc3好用doc1流程:文档写入 ES,经过分词器 Analyzer 拆分成词条 term;构建倒排索引表;查询的时候,把查询语句分词,去倒排索引匹配 term,快速拿到文档 id,再拿完整文档。关键点:Term:分词后的最小单元;分词器 Analyzer:包含字符过滤器、分词器、token 过滤器;中文推荐分词器:ik_max_word(细粒度)、ik_smart(粗粒度)。1.5 写入流程图解(面试必问)plaintext客户端写请求 → 协调节点Coordinating Node ↓ 1. 通过文档id hash路由,算出该文档落到哪个主分片 ↓ 2. 请求转发到对应的主分片节点 ↓ 3. 主分片执行写入,写入内存buffer + translog事务日志(防止宕机丢数据) ↓ 4. 主分片把写请求同步给所有副本分片,副本写入成功 ↓ 5. 所有副本返回成功 → 主分片返回成功给协调节点 → 返回客户端补充两个重要概念:refresh:内存 buffer → 生成 segment 放到文件系统缓存,此时可以被搜索,默认 1 秒刷新。近实时 NRT,不是完全实时。flush:把内存数据持久化到磁盘,清空 translog。translog:类似 mysql redo log,宕机恢复数据。面试常问:为什么 ES 写入不是实时?默认 1s refresh,写入后 1 秒后才能搜到。想要强实时可以手动 refresh,性能会暴跌。1.6 查询流程图解plaintext客户端搜索请求 → 协调节点 1. 协调节点把查询转发给该索引**所有主/副本分片** 2. 每个分片本地执行检索,返回文档id+打分_score给协调节点 3. 协调节点合并各个分片返回结果,全局排序、分页 4. 根据文档id,去各个分片拉取完整文档数据 5. 返回最终结果给客户端1.7 ES 的打分机制默认 BM25 算法(7.x 默认,替代旧的 TF‑IDF),计算词条和文档相关性得分_score。二、SpringBoot + ElasticSearch 完整样例版
RELATED

相关推荐

Mybatis resultType深度解析:从基础映射到高级应用实战

Mybatis resultType深度解析:从基础映射到高级应用实战

1. 项目概述&#xff1a;为什么resultType值得深究&#xff1f;如果你用过Mybatis&#xff0c;肯定写过类似<select id"findById" resultType"com.example.User">这样的SQL映射语句。resultType这个属性看起来平平无奇&#xff0c;不就是指定个返回类…

📅 2026/10/23 4:10:27
免命令行!NS-USBloader 用一款工具搞定 Switch 注入、传游戏与文件分割

免命令行!NS-USBloader 用一款工具搞定 Switch 注入、传游戏与文件分割

免命令行&#xff01;NS-USBloader 用一款工具搞定 Switch 注入、传游戏与文件分割 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitc…

📅 2026/10/18 8:00:59
ROS框架在电赛运动控制中的降维打击:从PID到成熟机器人方案

ROS框架在电赛运动控制中的降维打击:从PID到成熟机器人方案

1. 这篇文章真正要解决的问题如果你是一名电子设计竞赛&#xff08;电赛&#xff09;的参赛者&#xff0c;或者正在学习嵌入式开发&#xff0c;面对一个需要精确控制电机、实现复杂轨迹跟踪的题目时&#xff0c;你可能会立刻想到PID控制、卡尔曼滤波、甚至更高级的MPC&#xff…

📅 2026/10/22 11:04:55
MORE NEWS

更多资讯

📰

ABP中HttpClient的POST及GET请求方式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

【日拱一卒,三省吾身】2024.12.14随想

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

网盘直链下载助手使用指南:9 大网盘取直链,3 步直连 IDM 与 Motrix

网盘直链下载助手使用指南&#xff1a;9 大网盘取直链&#xff0c;3 步直连 IDM 与 Motrix 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘…

📰

PoB PoE2珠宝系统实战思路:从词缀选择到技能树布局的完整指南

PoB PoE2珠宝系统实战思路&#xff1a;从词缀选择到技能树布局的完整指南 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 技能树点满了&#xff0c;属性还是差一截&#xff1f;天赋点全花光、装备全拾完…

📰

【日拱一卒,三省吾身】2024.12.10 随想

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

深入理解Linux Netlink:内核与用户态通信的协议与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬