ElasticSearch查询指南:从青铜到王者的骚操作
ElasticSearch查询指南:从青铜到王者的骚操作
本文来源于笔者的CSDN原创,由于掘金>已经去掉了转载功能,所以只好重新上传,以下图片依然保持最初发布的水印(如CSDN水印)。(以后属于本人原创均以新建状态在多个平台分享发布)
第一章 倒排索引:ES的"新华字典"制作指南
1.1 反向操作的艺术
想象你有一本菜谱,但目录是按食材排列的:
- 🥚鸡蛋 → [番茄炒蛋 P12, 蛋花汤 P45]
- 🍅番茄 → [番茄炒蛋 P12, 罗宋汤 P33]
索引实战三部曲:
PUT /cookbook/_doc/1
{"title": "深夜食堂之黯然销魂饭","ingredients": ["叉烧", "温泉蛋", "葱花"],"steps": "将叉烧切成..."
}GET /cookbook/_search
{"query": {"match": { "ingredients": "温泉蛋 叉烧" }}
}
第二章 DSL语法:搜索界的乐高积木
2.1 万能bool查询:相亲条件排列组合
{"query": {"bool": {"must": [ // 必须满足{ "term": { "gender": "女" } },{ "range": { "age": { "gte": 25 } } }],"should": [ // 满足更好{ "term": { "hasPet": "布偶猫" } },{ "match": { "hobby": "滑雪 潜水" } }],"must_not": { // 绝对不要"term": { "character": "妈宝男" }},"filter": [ // 精确筛选{ "geo_distance": { "distance": "10km", "location": "陆家嘴" } }]}}
}
2.2 查询全家桶套餐
| 查询类型 | 使用场景 | 相当于相亲中的… |
|---|---|---|
term | 精准匹配 | “必须本地户口!” |
match | 语义分析 | “三观合得来就行” |
match_phrase | 词组匹配 | “要求’上海交大毕业’” |
range | 范围筛选 | “身高175cm以上” |
第三章 高阶操作:搜索结果的精装修
3.1 分页的陷阱与救赎
// 基础分页(小数据量适用)
{"from": 100,"size": 10,"query": { "match_all": {} }
}// 深度分页正确姿势
{"size": 10,"sort": [{ "timestamp": "desc" },{ "_id": "asc" }],"search_after": [1625000000, "abc123"]
}
3.2 排序的七十二变
// 多维度排序示例
{"sort": [{ "price": { "order": "asc" } }, // 优先便宜货{ "sales": { "order": "desc" } }, // 其次销量王{ "_score": { "order": "desc" } } // 最后匹配度]
}
第四章 实战演练:电商搜索系统改造记
4.1 索引定义:给商品打标签
PUT /ecommerce
{"mappings": {"properties": {"title": {"type": "text","analyzer": "ik_max_word","fields": {"keyword": { "type": "keyword" }}},"price": { "type": "double" },"category": { "type": "keyword" },"tags": { "type": "nested" }}}
}
4.2 综合查询:找性价比之王
GET /ecommerce/_search
{"query": {"bool": {"must": [{ "match": { "title": "无线耳机" } }],"filter": [{ "range": { "price": { "gte": 199, "lte": 599 } } },{ "term": { "category": "数码配件" } }],"should": [{ "term": { "tags": "七天无理由退货" } },{ "term": { "tags": "旗舰店" } }]}},"sort": [{ "rating": { "order": "desc" } },{ "price": { "order": "asc" } }],"from": 0,"size": 20
}
结果分析技巧:
{"took": 48, // 查询耗时48ms"hits": {"total": { "value": 82 }, // 共82件商品符合"max_score": null,"hits": [{"_score": 12.345,"_source": {"title": "【旗舰店】Beats无线降噪耳机","price": 499.00,"rating": 4.8},"sort": [4.8, 499.0] // 排序字段值}]}
}
第五章 避坑宝典:来自ES老司机的忠告
5.1 中文分词惨案现场
错误示范:
{ "term": { "title": "小米手机" } } // 永远搜不到!
正确姿势:
{ "match": { "title": "小米手机" } } // 自动分词搜索// 精确匹配需用keyword
{ "term": { "title.keyword": "小米手机" } }
5.2 性能优化三板斧
- 索引设计防脱发:
PUT /logs-2023-08
{"settings": {"number_of_shards": 3,"number_of_replicas": 1}
}
- 批量操作保平安:
# 错误示范:循环单条插入
for data in dataset:es.index(data)# 正确姿势:批量操作
from elasticsearch.helpers import bulk
bulk(es, ({"_index":"logs","_source":data} for data in dataset))
- 冷热数据分离术:
Hot节点(NVMe SSD) ←→ Warm节点(SATA SSD) ←→ Cold节点(HDD归档)
ES生存法则:
遇到性能问题先看日志,再看内存,最后默念三遍"分片设置合理吗?"
查询DSL就像搭积木,多摔几次就熟练了~
记住:永远不要在凌晨3点修改生产环境的Mapping!😱
相关文章:
ElasticSearch查询指南:从青铜到王者的骚操作
ElasticSearch查询指南:从青铜到王者的骚操作 本文来源于笔者的CSDN原创,由于掘金>已经去掉了转载功能,所以只好重新上传,以下图片依然保持最初发布的水印(如CSDN水印)。(以后属于本人原创均…...
财务运营域——营收稽核系统设计
摘要 本文主要介绍了营收稽核系统的背景、特点与作用。营收稽核系统的产生源于营收管理复杂性、财务合规与审计需求、提升数据透明度与决策效率、防范舞弊与风险管理、技术进步与自动化需求、多元化业务模式以及跨部门协作与数据整合等多方面因素。其特点包括自动化与智能化、…...
30 分钟从零开始入门 CSS
HTML CSS JS 30分钟从零开始入门拿下 HTML_html教程-CSDN博客 30 分钟从零开始入门 CSS-CSDN博客 JavaScript 指南:从入门到实战开发-CSDN博客 前言 最近也是在复习,把之前没写的博客补起来,之前给大家介绍了 html,现在是 CSS 咯…...
threejs:document.createElement创建标签后css设置失效
vue3threejs,做一个给模型批量CSS2D标签的案例,在导入模型的js文件里,跟着课程写的代码如下: import * as THREE from three; // 引入gltf模型加载库GLTFLoader.js import { GLTFLoader } from three/addons/loaders/GLTFLoader.…...
【GESP】C++三级练习 luogu-p1567, 统计天数
GESP三级,一维数组,多层循环和分支练习,难度★✮☆☆☆。 题目题解详见:https://www.coderli.com/gesp-3-luogu-p1567/ 【GESP】C三级练习 luogu-p1567, 统计天数 | OneCoderGESP三级,一维数组,多层循环和…...
springboot集成deepseek4j
1、文档地址 快速开始 - 零基础入门Java AI 免费的模型 Models 2、pom文件依赖 parent依赖 <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency>&…...
SpringBoot中报错:JSON parse error: Unrecognized filed 异常原因和解决方案
问题描述 当使用Spring Boot或其他JSON解析库(如Jackson)将JSON字符串反序列化为Java对象时,可能会遇到以下异常: JSON parse error: Unrecognized field "<fieldName>" (class <ClassName>), not marked…...
【数据分析】4 商业数据分析技能模型总结
优秀的商业分析师需要具备的能力 数据分析能力逻辑思维能力赢得结果能力 一、数据分析能力扩展:工具链生态与进阶场景 1. 数据获取技术升级 企业级数据源管理: 数据湖架构(AWS S3/阿里云OSS)与数据仓库(Snowflake/R…...
vue+element-dialog:修改关闭icon / 遮罩层不能挡住弹窗 / 遮罩层不能遮挡元素
一、是否显示操作按钮 二、修改dialog默认关闭icon .el-dialog__headerbtn {top: 15px !important;width: 18px;height: 18px;background: url(~assets/img/formworkManagement/close-button.png) left no-repeat;background-size: cover; } .el-dialog__headerbtn i {content…...
Linux系统之DHCP网络协议
目录 一、DHCP概述 二、DHCP部署实操 2.1、安装DHCP软件 2.2、拷贝配置文件 2.3、配置文件详解 2.4、重启软件服务 2.5、新开一台服务器,查看dhcp地址获取 一、DHCP概述 DHCP(Dynamic Host Configuration Protocol)是一种应用层网络协…...
夜莺监控 - 边缘告警引擎架构详解
前言 夜莺类似 Grafana 可以接入多个数据源,查询数据源的数据做告警和展示。但是有些数据源所在的机房和中心机房之间网络链路不好,如果由 n9e 进程去周期性查询数据并判定告警,那在网络链路抖动或拥塞的时候,告警就不稳定了。所…...
DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程
DeepSeek官网服务器繁忙的主要原因是由于用户数量激增导致的服务器资源紧张。为了解决这一问题,DeepSeek团队已经暂停了API服务充值,以避免对用户造成业务影响。目前,存量充值金额仍可继续调用,但充值功能暂时不可用。 DeepSe…...
kubernetes 初学命令
基础命令 kubectl 运维命令常用: #查看pod创建过程以及相关日志 kubectl describe pod pod-command -n dev #查看某个pod,以yaml格式展示结果 kubectl get pod nginx -o yaml #查看pod 详情 以及对应的集群IP地址 kubectl get pods -o wide 1. kubetc…...
学习笔记05——HashMap实现原理及源码解析(JDK8)
HashMap实现原理及源码解析(JDK8) 一、核心设计思想 数组链表红黑树:桶数组存储Node节点,哈希冲突时形成链表,链表长度≥8且桶数量≥64时转红黑树扰动函数:(h key.hashCode()) ^ (h >>> 16) 消除…...
React面试(一)
文章目录 1.vue和react有什么异同2.useEffect中为什么不能使用异步3.useEffect和useLayoutEffect的区别4.react的生命周期5.state和prop的区别6.受控组件和非受控组件7.为什么react16之后不把事件挂载到document上了8.讲一下react的hoc,它可以用来做什么?…...
Redis分布式缓存面试题
为什么使用分布式缓存? 1. 提升性能 降低延迟:将数据缓存在离应用更近的地方,减少数据访问时间。减轻数据库压力:缓存频繁访问的数据,减少对后端数据库的请求,提升系统响应速度。 2. 扩展性 水平扩展&a…...
AI 编码 2.0 分析、思考与探索实践:从 Cursor Composer 到 AutoDev Sketch
在周末的公司【AI4SE 效能革命与实践:软件研发的未来已来】直播里,我分享了《AI编码工具 2.0 从 Cursor 到 AutoDev Composer》主题演讲,分享了 AI 编码工具 2.0 的核心、我们的思考、以及我们的 AI 编码工具 2.0 探索实践。 在这篇文章中&am…...
图扑 HT for Web 总线式拓扑图的可视化实现
在图形用户界面(GUI)设计中,自定义连线技术不仅提升了用户体验,还为复杂数据可视化开辟了新的可能性。该功能点允许用户灵活地在界面元素之间创建视觉连接,使流程图、思维导图和网络拓扑图等信息呈现更加直观和动态。 …...
domain 网络安全 网络安全域
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 文章目录 1、域的概述 1.1、工作组与域1.2、域的特点1.3、域的组成1.4、域的部署概述1.5、活动目录1.6、组策略GPO 2、域的部署实验 2.1、建立局域网…...
IDEA 2024.1 最新永久可用(亲测有效)
今年idea发布了2024.1版本,这个版本带来了一系列令人兴奋的新功能和改进。最引人注目的是集成了更先进的 AI 助手,它现在能够提供更复杂的代码辅助功能,如代码自动补全、智能代码审查等,极大地提升了开发效率。此外,用…...
android计算屏幕尺寸dpi
说明: 我计划用一个Android程序,打印出平板屏幕的尺寸,大小,dpi等参数信息 效果图: 分辨率: 1280x752DPI: 213物理尺寸(英寸): 对角线 9.4step1: package com.example.myapplication;import android.os.Bundle; impor…...
deepseek-r1-centos-本地服务器配置方法
参考: 纯小白 Centos 部署DeepSeek指南_centos部署deepseek-CSDN博客 https://blog.csdn.net/xingxin550/article/details/145574080 手把手教大家如何在Centos7系统中安装Deepseek,一文搞定_centos部署deepseek-CSDN博客 https://blog.csdn.net/soso67…...
nginx 配置https
参考文档:nginx 文档 -- nginx官网|nginx下载安装|nginx配置|nginx教程 配置 HTTPS 服务器 HTTPS 服务器优化 SSL 证书链 单个 HTTP/HTTPS 服务器 基于名称的 HTTPS 服务器 具有多个名称 的 SSL 证书 服务器名称指示 兼容性 要配置 HTTPS 服务器,ssl…...
mapbox添加自定义图片绑定点击事件,弹窗为自定义组件
一、首先构建根据后端返回的数据构建geojson格式的数据,点位的geojson数据格式: {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "…...
【Python爬虫(84)】当强化学习邂逅Python爬虫:解锁高效抓取新姿势
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…...
车载DoIP诊断框架 --- 连接 DoIP ECU/车辆的故障排除
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
嵌入式开发:傅里叶变换(4):在 STM32上面实现FFT(基于STM32L071KZT6 HAL库+DSP库)
目录 步骤 1:准备工作 步骤 2:创建 Keil 项目,并配置工程 步骤 3:在MDK工程上添加 CMSIS-DSP 库 步骤 5:编写代码 步骤 6:配置时钟和优化 步骤 7:调试与验证 步骤 8:优化和调…...
Uniapp 小程序接口封装与使用
深入理解 Uniapp 小程序接口封装与使用 在 Uniapp 小程序开发中,接口请求是获取和交互数据的关键部分。合理地封装接口不仅能提高代码的可维护性,还能增强项目的健壮性。今天,我们就来详细探讨一下如何在 Uniapp 中进行接口封装、引入以及使…...
Python入门 — 类
面向对象编程中,编写表示现实世界中的事物和情景的类(class),并基于这些类来创建对象(object)。根据类来创建对象称为实例化,这样就可以使用类的实例(instance) 一、创建…...
vscode/cursor+godot C#中使用socketIO
在 Visual Studio Code(VS Code)中安装 NuGet 包(例如SocketIOClient),你可以通过以下几种方法: 方法 1:使用dotnet cli 打开终端:在 VS Code 中按下Ctrl 或者通过菜单View -> Terminal打开终端。 导…...
