尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
18 Elasticsearch
原理图引用自一文彻底搞懂 Elasticsearch原理、场景、避坑与优化1 ElasticsearchElasticsearch是什么 是一个基于 Apache Lucene 的分布式搜索和数据分析引擎常用于全文搜索、日志分析、安全监控、业务分析和运维监控等场景。Elasticsearch 应用场景适合需要快速搜索和分析海量数据的场景尤其是传统关系型数据库难以高效处理全文检索和大规模日志分析时。2 起源这个应用最初叫 iCook可以理解为一个给妻子用的“菜谱管理 菜谱搜索”小程序。当时 Shay Banon 刚到伦敦妻子正在学习烹饪他需要一个工具帮她管理、查找烹饪课程中收集到的菜谱和烹饪信息。这个应用的核心能力大致包括菜谱管理保存菜谱、配料、步骤等信息。关键词搜索在搜索框里输入食材、菜名、做法或概念快速找到相关菜谱。文本分词匹配字段检索按配料、菜名、分类等字段查找而不只是简单匹配文本。 关键词精准匹配阶段背景结果2004 年前后Shay Banon 想为正在学厨师的妻子做一个食谱搜索应用直接使用 Lucene 太复杂于是封装了一个更易用的 Java 搜索框架Compass2010 年前后他在工作中接触高并发、分布式场景发现需要一个可扩展、实时、易用的搜索服务重写 Compass加入分布式架构发布Elasticsearch首个版本2012 年起开源社区快速增长企业级需求增多成立 Elasticsearch 公司后更名为Elastic并与 Logstash、Kibana 组成ELK / Elastic Stack它解决了什么问题Lucene 强大但难用传统数据库不擅长全文搜索关系型数据库在模糊匹配、全文检索、海量日志分析上效率较低。传统数据库单机搜索不够用数据量变大后需要分布式、可水平扩展、近实时搜索。3 原理3.1 倒排索引 快速匹配文本中的内容返回docId把文本拆成词项再建立“词项 → 文档”的反向映射结构。正向 vs 倒排索引类型组织方式查询方式正向索引文档 → 词项要知道文档里有什么得看文档本身倒排索引词项 → 文档知道一个词就能直接找到包含它的文档例如写入一条数据PUT/products/_doc/1{name:苹果 iPhone 15 手机,price:5999,category:手机}文本拆成词项苹果iPhone 15手机建立“词项 → 文档”的反向映射结构。| 词项 | 文档ID ||—|—|| 苹果 | 1 || iPhone | 1 || 15 | 1 || 手机 | 1 |3.2 Doc Values 根据分类进行查找配合倒排索引使用为 price、category 建立 Doc Values即 docId → 字段值 的正向映射。通过倒排索引或范围索引分别获得满足 price 条件和 category 条件的 docId 集合。对多个 docId 集合取交集得到同时满足条件的候选 docId 集合。再根据候选 docId从 Doc Values 中读取对应的字段值用于后续排序、聚合或返回。Doc Values 是按 docId 顺序存储字段值的列式结构具体实现可能是压缩数组、字典编码或有序值列表。4 具体命令使用Elasticsearch 的日常操作几乎都通过 REST API 完成下面按「查看状态 → 索引管理 → 文档读写 → 搜索查询」的顺序把最常用的命令整理一遍。示例默认在 Kibana Dev Tools 中执行用 curl 时把GET /xxx换成curl -XGET http://localhost:9200/xxx即可。4.1 集群与节点查看_cluster# 集群健康状态green/yellow/redGET _cluster/health# 节点列表与角色GET _cat/nodes?vhname,node.role,heap.percent,cpu,load_1m# 集群统计信息GET _cluster/stats# 查看热点线程排查 CPU 飙高GET _nodes/hot_threads4.2 索引管理 /products/_mapping# 创建索引指定分片数和副本数PUT /products{settings:{number_of_shards:3,number_of_replicas:1}}# 查看索引列表GET _cat/indices?v# 查看索引的映射GET /products/_mapping# 修改副本数PUT /products/_settings{number_of_replicas:2}# 删除索引DELETE /products4.3 文档读写/products/_doc /products/_bulk# 写入一条文档指定 IDPUT /products/_doc/1{name:苹果 iPhone 15 手机,price:5999,category:手机}# 写入文档不指定 ID由 ES 自动生成POST /products/_doc{name:小米 14 手机,price:3999,category:手机}# 按 ID 查询GET /products/_doc/1# 更新部分字段POST /products/_update/1{doc:{price:5499}}# 删除文档DELETE /products/_doc/1# 批量写入POST /products/_bulk{index:{_id:2}}{name:华为 Mate 60,price:6999,category:手机}{index:{_id:3}}{name:iPad Air,price:4799,category:平板}4.4 搜索查询/products/_search# 查询全部GET /products/_search{query:{match_all:{}}}# 全文检索name 字段包含「手机」GET /products/_search{query:{match:{name:手机}}}# 精确匹配 范围过滤GET /products/_search{query:{bool:{must:[{match:{name:手机}}],filter:[{range:{price:{gte:4000,lte:7000}}}]}}}# 排序 分页 只返回部分字段GET /products/_search{query:{match_all:{}},sort:[{price:desc}],from:0,size:10,_source:[name,price]}# 聚合按分类统计数量与平均价格GET /products/_search{size:0,aggs:{by_category:{terms:{field:category},aggs:{avg_price:{avg:{field:price}}}}}}
RELATED

相关推荐

完整上手 Trae Agent:从克隆仓库到看懂它如何执行任务

完整上手 Trae Agent:从克隆仓库到看懂它如何执行任务

完整上手 Trae Agent:从克隆仓库到看懂它如何执行任务 【免费下载链接】trae-agent Trae Agent is an LLM-based agent for general purpose software engineering tasks. 项目地址: https://gitcode.com/gh_mirrors/tr/trae-agent Trae Agent 是一个基于 LL…

📅 2026/11/4 11:59:32
Tiled 实操教程:3 步做出首张带碰撞、可导出的地图

Tiled 实操教程:3 步做出首张带碰撞、可导出的地图

Tiled 实操教程:3 步做出首张带碰撞、可导出的地图 【免费下载链接】tiled Flexible level editor 项目地址: https://gitcode.com/gh_mirrors/ti/tiled 不到 1 小时,你会得到一张 4030 格、带 3 组平台碰撞框和 5 个出生点的 Tiled 地图 map_01.…

📅 2026/11/4 11:59:32
dsh-purge 安装指南:3 步跑通 DeepSeek 红队评测插件 + 完整排坑清单

dsh-purge 安装指南:3 步跑通 DeepSeek 红队评测插件 + 完整排坑清单

dsh-purge 安装指南:3 步跑通 DeepSeek 红队评测插件 完整排坑清单 【免费下载链接】dsh-purge DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every model —…

📅 2026/11/4 11:59:32
MORE NEWS

更多资讯

📰

51单片机MFRC522完整RFID程序:防冲突、扇区认证与数据读写全链路实现

简介:本资源是面向嵌入式初学者与51单片机开发者的RFID系统实战项目包,聚焦无线识别技术在智能门禁、电子标签读取等物联网基础场景中的落地实现。压缩包为RAR格式,大小15.04MB,虽未提供具体文件列表,但根据描述可知包…

📰

Voxtral语音克隆技术:3秒实现多语言声线复制

1. 语音克隆技术的新里程碑 上周在测试最新发布的Voxtral时,我对着麦克风随意说了句"今天天气不错",系统在3.2秒后就用我的声线完整复述了一段《哈姆雷特》选段——连我特有的尾音上扬和轻微口齿不清都完美保留。这就是Mistral AI最新推出的Vo…

📰

Recoil在OpenHarmony中的分布式状态管理实践

1. Recoil在OpenHarmony环境中的独特价值在React Native跨平台开发领域,状态管理一直是决定应用架构质量的关键因素。当我们将目光投向OpenHarmony这个新兴的国产操作系统平台时,传统的状态管理方案往往难以充分发挥鸿蒙系统的分布式特性。这正是Recoil这…

📰

React与LangGraph轻量级工作流实践指南

## 1. 项目概述:React与LangGraph的轻量级工作流实践最近在重构一个需要动态决策流程的前端项目时,尝试了直接用React组件配合LangGraph工作流引擎的方案。与常见的抽象基类/子类模式不同,这种"裸用"方式在快速迭代场景下展现出独特…

📰

goInception MySQL运维四合一工具:审核/执行/备份/回滚实战指南

简介:goInception是一款面向MySQL数据库运维工程师与DBA的轻量级SQL审核与治理工具,基于Go语言开发,融合SQL语法解析、规则化审核、安全执行、自动备份及回滚语句生成四大核心能力,有效规避线上DDL/DML误操作风险,适用…

📰

ASP.NET预编译站点信息泄露与安全加固实践

1. 预编译站点到底是什么:先弄懂它的“骨架” 聊这个话题之前,我先把语境锁死:下面所有的内容,都基于 已获得书面授权的安全评估、自有系统的加固自测,或者你是甲方运维在给自己家站点做体检 。没有授权就去扫别人家…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬