【Elasticsearch】映射:fielddata 详解
映射:fielddata 详解
- 1.fielddata 是什么
- 2.fielddata 的工作原理
- 3.主要用法
- 3.1 启用 fielddata(通常在 text 字段上)
- 3.2 监控 fielddata 使用情况
- 3.3 清除 fielddata 缓存
- 4.使用场景示例
- 示例 1:对 text 字段进行聚合
- 示例 2:对 text 字段进行排序
- 5.fielddata 与 doc_values 的区别
- 6.注意事项
- 7.最佳实践
1.fielddata 是什么
fielddata
是 Elasticsearch 中一种数据结构,用于在内存中缓存字段数据,主要服务于以下场景:
- 聚合操作(Aggregations)
- 排序(Sorting)
- 脚本计算(Scripting)
- 某些类型的查询(如
field
字段上的term
查询)
当需要对 text
字段或其他非 doc_values
支持的字段执行上述操作时,Elasticsearch 需要将这些字段的值加载到内存中,这就是 fielddata
的作用。
2.fielddata 的工作原理
- 按需加载:当第一次需要对某个字段执行聚合 / 排序等操作时,Elasticsearch 会从磁盘读取该字段的所有值并构建内存中的数据结构。
- 存储在 JVM 堆内存:
fielddata
会占用 JVM 堆内存空间。 - 字段级启用:默认情况下,
text
字段禁用fielddata
,keyword
字段使用doc_values
而非fielddata
。
3.主要用法
3.1 启用 fielddata(通常在 text 字段上)
PUT my_index/_mapping
{"properties": {"my_text_field": { "type": "text","fielddata": true}}
}
3.2 监控 fielddata 使用情况
GET _nodes/stats/indices/fielddata?fields=*
3.3 清除 fielddata 缓存
POST my_index/_cache/clear?fielddata=true
4.使用场景示例
示例 1:对 text 字段进行聚合
GET my_index/_search
{"size": 0,"aggs": {"my_terms": {"terms": {"field": "my_text_field" // 需要该字段启用 fielddata}}}
}
示例 2:对 text 字段进行排序
GET my_index/_search
{"sort": [{"my_text_field": {"order": "asc"}}]
}
5.fielddata 与 doc_values 的区别
特性 | fielddata | doc_values |
---|---|---|
构建时机 | 查询时按需构建 | 索引时预先构建 |
存储位置 | JVM 堆内存 | 磁盘(操作系统缓存) |
内存占用 | 高 | 低 |
适用字段类型 | 主要为 text 字段 | 主要为 keyword / numeric / date 等字段 |
默认启用 | text 字段默认禁用 | 支持的字段默认启用 |
6.注意事项
- 内存消耗:
fielddata
会显著增加内存使用,特别是高基数(大量唯一值)字段。 - 性能影响:首次加载
fielddata
可能导致查询延迟。 - 替代方案:对于
keyword
/numeric
/date
等字段,优先使用doc_values
。 - 熔断机制:Elasticsearch 有
fielddata
熔断器防止内存耗尽。
7.最佳实践
-
尽量避免在
text
字段上启用fielddata
。 -
如需对文本进行聚合/排序,考虑使用多字段(
multi-field
)映射:"my_field": {"type": "text","fields": {"keyword": {"type": "keyword"}} }
然后对
my_field.keyword
进行操作。 -
监控
fielddata
内存使用,设置合理的熔断阈值。
相关文章:
【Elasticsearch】映射:fielddata 详解
映射:fielddata 详解 1.fielddata 是什么2.fielddata 的工作原理3.主要用法3.1 启用 fielddata(通常在 text 字段上)3.2 监控 fielddata 使用情况3.3 清除 fielddata 缓存 4.使用场景示例示例 1:对 text 字段进行聚合示例 2&#…...
用Python训练自动驾驶神经网络:从零开始驾驭未来之路
用Python训练自动驾驶神经网络:从零开始驾驭未来之路 哈喽,朋友们!我是Echo_Wish,今天咱们聊点超酷的话题——自动驾驶中的神经网络训练,用Python怎么玩转起来? 说实话,自动驾驶一直是科技圈的香饽饽,为什么?因为它承载了未来交通的无限可能:减少事故、提升效率、节…...
【电路】阻抗匹配
📝 阻抗匹配 一、什么是阻抗匹配? 阻抗匹配(Impedance Matching)是指在电子系统中,为了实现最大功率传输或最小信号反射,使信号源、传输线与负载之间的阻抗达到一种“匹配”状态的技术。 研究对象&#x…...

mariadb5.5.56在centos7.6环境安装
mariadb5.5.56在centos7.6环境安装 1 下载安装包 https://mariadb.org/mariadb/all-releases/#5-5 2 上传安装包的服务器 mariadb-5.5.56-linux-systemd-x86_64.tar.gz 3 解压安装包 tar -zxvf mariadb-5.5.56-linux-systemd-x86_64.tar.gz mv mariadb-5.5.56-linux-syst…...
MySQL 索引失效:六大场景与原理剖析
我们都熟知索引是优化 MySQL 查询性能的利器。但你是否遇到过这样的困境:明明在表上建立了索引,查询却依然缓慢,EXPLAIN 分析后发现索引并未被使用?这就是所谓的“索引失效”。 索引失效并非一个 Bug,而是 MySQL 查询…...

打造你的 Android 图像编辑器:深入解析 PhotoEditor 开源库
📸 什么是 PhotoEditor? PhotoEditor 是一个专为 Android 平台设计的开源图像编辑库,旨在为开发者提供简单易用的图像编辑功能。它支持绘图、添加文本、应用滤镜、插入表情符号和贴纸等功能,类似于 Instagram 的编辑体验。该库采…...
DeepSeek 终章:破局之路,未来已来
目录 一、DeepSeek 技术发展现状回顾二、未来发展趋势2.1 多模态融合的拓展2.2 模型可解释性的强化2.3 垂直领域的深化应用 三、面临的技术挑战3.1 数据隐私与安全难题3.2 算法偏见与公平性困境3.3 网络攻击与恶意利用威胁 四、挑战应对策略探讨4.1 技术层面的解决方案4.2 算法…...
八:操作系统设备管理之缓冲、缓存与假脱机
弥合鸿沟:操作系统中的缓冲、缓存与假脱机技术深度解析 在计算机系统的世界里,存在着一个根本性的速度差异:中央处理器(CPU)的执行速度飞快,而输入/输出(I/O)设备(如硬盘…...

Azure 虚拟机端口资源:专用 IP 和公共 IP Azure Machine Learning 计算实例BUG
## 报错无解 找不到Azure ML 计算实例关联的 NSG .env 文件和 ufw status: .env 文件中 EXPOSE_NGINX_PORT8080 是正确的,它告诉 docker-compose.yaml 将 Nginx 暴露在宿主机的 8080 端口。 sudo ufw status 显示 Status: inactive,意味着宿…...

Java核心技术-卷I-读书笔记(第十二版)
第一章 Java程序设计概述 09年sun被oracle收购->11年java7(简单改进)->14年java8(函数式编程)->2017年java9->2018年java11->2021年java17 第二章 Java编程环境 Java9后新增JShell,提供类似脚本试执…...
从C到C++语法过度1
从C到C语法过度1 文章目录 从C到C语法过度11. 字符串string2. 引用3. 类型转换3.1 新式转换 const_cast3.2 新式转换 static_cast 4. 关键字auto 1. 字符串string C语言从本质上来说,是没有字符串这种类型的,在C语言中如果要表达字符串,只能…...
AI是如何换装的?
AI换装是一种基于计算机视觉、深度学习和生成对抗网络(GAN)的技术,能够通过算法自动识别人像并更换服饰,实现虚拟换装的效果。这项技术广泛应用于电商服装试穿、虚拟偶像、影视特效、社交媒体滤镜等领域。 AI换装的核心技术 1. 图像分割与人体解析 换装的第一步是图像分…...

MATLAB遍历生成20到1000个节点的无线通信网络拓扑推理数据
功能: 遍历生成20到1000个节点的无线通信网络拓扑推理数据,包括网络拓扑和每个节点发射的电磁信号,采样率1MHz/3000,信号时长5.7s,单帧数据波形为实采 数据生成效果: 拓扑及空间位置: 节点电磁…...
python爬虫:grequests的详细使用(基于gevent和requests的异步HTTP请求库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、grequests 概述1.1 grequests 介绍1.2 注意事项1.3 替代方案比较1.4 基本组件1.5 grequests 安装二、基本用法2.1 创建请求任务2.2 发送请求并获取响应2.3 带参数的请求三、高级用法3.1 自定义回调函数3.2 设置超时…...
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
在使用PHP连接MySQL数据库时,可能会遇到连接失败和写锁问题。这类问题可能会影响应用的正常运行,本文将详细介绍排查和解决这些问题的方法。 一、PHP连接MySQL数据库失败 1. 排查连接失败的常见原因 数据库配置错误: 检查数据库主机、用户名…...

卫星接收天线G/T值怎么计算?附G/T计算excel表格链接
我们在进行无线通信链路设计时,都会涉及接收天线最重要的参数G/T。今天,咱们就来聊聊G/T值该怎么计算,计算过程中有哪些需要留意的地方,以及当你看到产品说明书中标注了G/T指标,还需要进一步了解哪些信息。 G/T的含义 …...

基于dify的营养分析工作流:3分钟生成个人营养分析报告
你去医院做体检,需要多久拿到体检报告呢?医院会为每位病人做一份多维度的健康报告吗?"人工报告需1小时/份?数据误差率高达35%?传统工具无法个性化? Dify工作流AI模型的组合拳,正在重塑健康…...
Kali Linux 安全工具解析
Kali Linux 安全工具解析 目录 Kali Linux 安全工具解析一、Kali Linux 概述1.1 核心特性1.2 系统要求 二、核心工具分类与实战应用2.1 信息收集工具2.1.1 Nmap2.1.2 Recon-ng2.1.3 theHarvester 2.2 漏洞利用工具2.2.1 Metasploit Framework2.2.2 SQLMap2.2.3 Burp Suite 2.3 …...
端午编程小游戏--艾草驱邪
刚刚过去的端午,参加了学校的一个活动,用python做了一个小游戏,当然这个小游戏还可以继续改进,可以加个bgm什么的...... 可以小玩一下 import pygame import random import math import sys import timepygame.init() pygame.mi…...

新成果:GaN基VCSEL动态物理模型开发
作为高速数据传输与光电信号处理的核心器件,垂直腔面发射激光器(VCSEL)在高速光通信、激光雷达等领域应用广泛,其动态特性直接关联器件调制速率及稳定性等关键参数。近期,天津赛米卡尔科技有限公司技术团队开发了GaN基…...
0x-4-Oracle 23 ai-sqlcl 25.1.1 独立安装-配置和优化
一、独立安装sqlcl 1. 安装 Java 环境 SQLcl 需要 Java 1.8.0_220 或更高版本, Oracle Linux9.6 上已经默认安装Oracle 23ai后Java 是11 lts版本 如果java jdk安装错误将遇上SQLcl困扰n多人的bug sql /nolog 错误:找不到或加载主类 oracle.dbto…...

Appium+python自动化(十一)- 元素定位- 下
1、 List定位 List顾名思义就是一个列表,在python里面也有list这一个说法,如果你不是很理解什么是list,这里暂且理解为一个数组或者说一个集合。首先一个list是一个集合,那么他的个数也就成了不确定性,所以这里需要用复…...

免费批量PDF转Word工具
免费批量PDF转Word工具 工具简介 这是一款简单易用的批量PDF转Word工具,支持: 批量转换多个PDF文件保留原始格式和布局快速高效的转换速度完全免费使用 工具地址 下载链接 网盘下载地址:点击下载 提取码:8888 功能特点 ✅…...
OD 算法题 B卷【水果摊小买卖】
文章目录 水果摊小买卖 水果摊小买卖 小王手里有点闲钱,想做点水果买卖,给出两个数组m, n, m[i]表示第i个水果的成本价,n[i]表示第i个水果能卖出的价格;假如现在有本钱k,试问最后最多能赚多少钱࿱…...

Mac/iOS 如何解压 RAR 格式压缩包:常用工具与详细操作步骤
一、Mac 系统解压 RAR 文件之法 Mac 系统上解压 RAR 文件有多种方法,除了系统自带的一些简单功能外,还可以借助特定的软件来实现高效解压。以下将介绍几款常用工具的解压操作。 (一)解压专家解压步骤 解压专家 是一款在 Mac 和 …...
二进制安全-IDA Pro-API
idaapi 是 IDA Pro(Interactive Disassembler Professional) 反汇编工具的 Python API 接口,用于开发自动化脚本、插件和自定义分析工具。通过 idaapi,开发者可以访问 IDA Pro 的核心功能(如反汇编、符号分析、交叉引用…...

机器学习监督学习实战四:九种回归算法对波士顿房价数据进行回归预测和评估方法可视化
本项目代码在个人github链接:https://github.com/KLWU07/Machine-learning-Project-practice/tree/main 处理流程 1.导入波士顿房价数据集并进行预处理。2.使用 GradientBoostingRegressor 模型进行回归分析。3.通过交叉验证评估模型的性能,计算 MAE、…...
1. Web网络基础 - IP地址核心知识解析
深入解析IP地址与ipconfig命令:网络工程师的必备技能 在网络世界中,IP地址是设备通信的基石。本文将全面解析IP地址的核心概念,并通过ipconfig命令实战演示如何获取关键网络配置信息。 一、IP地址核心知识解析 1. IP地址的本质 定义&#x…...

微软重磅发布Magentic UI,交互式AI Agent助手实测!
微软重磅发布Magentic UI,交互式AI Agent助手实测! 何为Magentic UI? Magentic UI 是微软于5.19重磅发布的开源Agent助手,并于24日刚更新了第二个版本0.04版 从官方的介绍来看,目标是打造一款 以人为中心 的智能助手,其底层由多个不同的智能体系统驱动,能够实现网页浏览…...
c# 完成恩尼格玛加密扩展
c# 完成恩尼格玛加密扩展 恩尼格玛扩展为可见字符恩尼格玛的设备原始字符顺序转子的设置反射器的设置连接板的设置 初始数据的设置第一版 C# 代码第二版 C# 代码 总结 恩尼格玛 在之前,我们使用 python 实现了一版恩尼格玛的加密算法,但是这一版&#x…...