返回顶部
E

ElasticsearchElasticsearch查询

Query and index Elasticsearch with proper mappings, analyzers, and search patterns.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,498
下载量
免费
免费
5
收藏
概述
安装方式
版本历史

Elasticsearch

映射错误

  • - 始终定义显式映射——动态映射会猜错(先出现123会让字段变成整数,后出现abc就会失败)
  • text用于全文搜索,keyword用于精确匹配/聚合——对ID使用text类型会破坏筛选功能
  • 索引后无法更改字段类型——必须重新索引到具有正确映射的新索引
  • 设置dynamic: strict以拒绝未映射字段——可捕获字段名中的拼写错误

Text与Keyword对比

  • - text会被分析(分词、转小写)——Quick Brown能匹配到quick的搜索
  • keyword是精确字节匹配——Quick Brown只能精确匹配Quick Brown
  • 两者都需要?使用多字段:title: { type: text, fields: { raw: { type: keyword }}}
  • 在title.raw上排序/聚合,在title上搜索

查询与筛选上下文

  • - 查询上下文计算相关性评分——开销大,用于搜索排序
  • 筛选上下文是是/否判断——可缓存,用于精确条件(状态、日期范围)
  • 组合使用:bool.must用于评分,bool.filter用于不评分的筛选
  • 日期/数字的范围查询几乎总是属于筛选而非查询

分析器

  • - standard分析器会转小写并去除标点——适用于大多数文本
  • keyword分析器保留精确字符串——用于代码、SKU、邮箱
  • 语言分析器(english)会提取词干——running能匹配run
  • 在索引前使用_analyze端点测试分析器——生产环境中的意外会带来麻烦

Nested与Object对比

  • - Object类型会压平数组——{tags: [{key:a,val:1}, {key:b,val:2}]}变成tags.key: [a,b], tags.val: [1,2]
  • 压平后失去关联性——查询key=a AND val=2会错误匹配上述数据
  • 使用nested类型保留对象边界——需要nested查询包装器
  • Nested开销大——避免用于高基数数组

分页陷阱

  • - from + size限制为10,000条结果——深度分页会失败
  • searchafter用于深度分页——需要一致的排序,通常用id
  • Scroll API用于批量导出——保持时间点视图,但会占用资源
  • 不要对用户分页使用scroll——search_after才是正确选择

批量操作

  • - 永远不要逐条索引文档——使用_bulk API,每批5-15MB
  • 批量格式:换行分隔的JSON,先是操作行,然后是文档行
  • 检查响应中的部分失败——批量操作可能整体成功但个别文档出错
  • 批量加载时设置refresh=false——在批次完成后刷新

性能优化

  • - 如果不需要完整文档,使用source: false配合storedfields——减少I/O
  • 对可缓存条件使用filter——Elasticsearch会缓存筛选结果
  • 避免前导通配符(*term)——会强制全扫描;使用reverse字段进行后缀搜索
  • profile: true显示查询执行分解——找出慢速子句

分片策略

  • - 分片大小10-50GB最优——太小则开销大,太大则恢复慢
  • 分片数量在创建时固定——不重新索引就无法重新分片
  • 副本用于提高读取吞吐量和可用性——根据查询负载设置
  • 小索引从1个分片开始——过度分片会损害性能

索引管理

  • - 使用索引模板——新索引获得一致的映射和设置
  • 使用别名实现零停机重新索引——重新索引后将别名指向新索引
  • ILM(索引生命周期管理)用于时间序列数据——自动滚动、删除旧索引
  • 关闭未使用的索引以释放内存——关闭的索引不占用堆内存

聚合操作

  • - terms聚合需要keyword字段——text字段会失败或产生垃圾结果
  • terms聚合默认size: 10——增大以获取所有桶,或使用composite聚合
  • 基数统计是近似值(HyperLogLog)——精确计数需要扫描所有文档
  • 嵌套聚合需要nested包装器——与嵌套查询模式一致

常见错误

  • - clusterblockexception——磁盘使用率>85%,集群变为只读;清理磁盘,用cluster/settings重置
  • version conflict——并发更新;使用retryonconflict重试或使用乐观锁
  • circuitbreakerexception——查询占用内存过多;缩小聚合范围
  • 动态字段导致映射爆炸——设置index.mapping.totalfields.limit并使用严格映射

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 elasticsearch-1776420004 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 elasticsearch-1776420004 技能

通过命令行安装

skillhub install elasticsearch-1776420004

下载

⬇ 下载 Elasticsearch v1.0.0(免费)

文件大小: 2.79 KB | 发布时间: 2026-4-17 20:12

v1.0.0 最新 2026-4-17 20:12
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部