Elastic字段映射(_source,doc_value,fileddata,index,store)
Elastic字段映射(_source,doc_value,filed_data,index,store)
_source:
source 字段用于存储 post 到 ES 的原始 json 文档。为什么要存储原始文档呢?因为 ES 采用倒排索引对文本进行搜索,而倒排索引无法存储原始输入文本。一段文本交给ES后,首先会被分析器(analyzer)打散成单词,为了保证搜索的准确性,在打散的过程中,会去除文本中的标点符号,统一文本的大小写,甚至对于英文等主流语言,会把发生形式变化的单词恢复成原型或词根,然后再根据统一规整之后的单词建立倒排索引,经过如此一番处理,原文已经面目全非。因此需要有一个地方来存储原始的信息,以便在搜到这个文档时能够把原文返回给查询者。
相对于store,它只要建立一个文档索引,当需要对多个字段进行查询的时候,只需要一次io。
那么一定要存储原始文档吗?不一定!如果没有取出整个原始 json 结构体的需求,可以在 mapping 中关闭 source 字段或者只在 source 中存储部分字段(使用store),关闭后能减少内存和数据大小,提高性能。 但是这样做有些负面影响:
- (1)不能获取到原文
- (2)无法reindex:如果存储了 source,当 index 发生损坏,或需要改变 mapping 结构时,由于存在原始数据,ES可以通过原始数据自动重建index,如果不存 source 则无法实现
- (3)无法在查询中使用script:因为 script 需要访问 source 中的字段
- 文档需要使用update或者update_by_query更新
- 文档高亮(有store也可以)
可以通过在查询的时候进行过滤
//查询
GET index/_search
{"_source": ["field"],"query" : {"match_all": {}}
}
//设置
{
"settings" : {"mappings" : {"_source": {"enable": true,"excludes": [],"includes": []}}}
}
doc_value
DocValue其实是Lucene在构建倒排索引时,会额外建立一个有序的正排索引(基于document => field value的映射列表)。
它是一个列式存储。不能用在text类型的字段。
因为倒排索引不能进行排序和聚合,因此如果字段需要这两个功能就可以开启它。
缺点:有额外的磁盘消耗
//查询
GET index/_search
{"doc_value": ["field"],"query" : {"match_all": {}}
}
//设置
{
"settings" : {"mappings" : {"properties": {"content": {"doc_value": true // 默认开启},}}}
}
fielddata
fielddata 也是用来进行聚合操作的,但是他是针对text的,算是对doc_value的一个补充。
fielddata 不是临时缓存。它是驻留内存里的数据结构,必须可以快速执行访问,而且构建它的代价十分高昂。如果每个请求都重载数据,性能会十分糟糕
在使用这个的过程中 ,应该好好思考两个问题“:
- 为什么要对text类型的字段进行聚合操作
- 如果你真想对这个字段进行聚合,为什么不将他设置为keyword类型,使用doc_value
index
Index:定义字段分词以及创建索引(只有建立索引,才能被检索)。缺点:会额外维护一个索引库
关闭后,字段不建立索引,不被检索,无法通过检索查询到该字段。反过来,有些业务要求某些字段不能被搜索,那么index属性设置为false即可。
store
store开启后
ES会对该字段单独存储倒排索引,每次根据ID检索的时候,会多走一次IO来从倒排索引取数据,以便于快速检索。
注意:如果想要对某个字段实现高亮功能,_source和store至少保留一个。
一般来说_source和store 只要开启一个就行。因为如果_source存在的话,他可以直接在_source检索出来。
store默认是关闭的,它开启的字段越多,索引库就越大,维护的成本就越高,检索的效率也就会会越差、
相关文章:
Elastic字段映射(_source,doc_value,fileddata,index,store)
Elastic字段映射(_source,doc_value,filed_data,index,store) _source: source 字段用于存储 post 到 ES 的原始 json 文档。为什么要存储原始文档呢?因为 ES 采用倒排索引对文本进行搜索,而倒排索引无法存储原始输入…...
kotlin空类型安全 !! ?. ?:
1、定义可空类型 fun main(){// 定义可空类型var x:String? "hello"x null } 2、!! 强转类型 定义可空类型之后,如果使用其内置方法,编译不会通过,因为值有可能为null,可以使用 !! 把类型强转为不可空:…...
通过 WireGuard 组建虚拟局域网 实现多个局域网全互联
本文后半部分代码框较多,欢迎点击原文链接获得更佳的阅读体验。 前言 上一篇关于 WireGuard 的文章通过 Docker 安装 wg-easy 的形式来使用 WireGuard,但 wg-easy 的功能比较有限,并不能发挥出 WireGuard 的全部功力。 如果只是想要出门在外连随时随地的连回家里的局域网,…...
qmt量化交易策略小白学习笔记第47期【qmt编程之期货仓单】
qmt编程之获取期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 期货仓单 提示 1…...
点云处理中阶 Sampling
目录 一、什么是点云Sampling 二、示例代码 1、下采样 Downsampling 2、均匀采样 3、上采样 4、表面重建 一、什么是点云Sampling 点云处理中的采样(sampling)是指从大量点云数据中选取一部分代表性的数据点,以减少计算复杂度和内存使用,同时保留点云的几何特征和重…...
为什么print语句被Python3遗弃?
在开发和维护python项目的时候发现经常有print语句报错,原因是python3放弃了print语句 print 语句 早就被列在了不可靠的语言特性列表中,例如 Guido 的“Python 之悔”(Python Regrets)演讲【1】,并计划在 Python 300…...
067、Python 高阶函数的编写:优质冒泡排序
以下写了个简单的冒泡排序函数: def bubble_sort(items: list) -> list:for i in range(1, len(items)):swapped Falsefor j in range(0, len(items) - 1):if items[j] > items[j 1]:items[j], items[j 1] items[j 1], items[j]swapped Trueif not swa…...
【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识
🔥 个人主页:空白诗 文章目录 引言一、Python简介1.1 历史背景1.2 设计哲学1.3 语言特性1.4 应用场景1.5 为什么选择Python 二、Python语言基础2.1 注释规则2.1.1 单行注释2.1.2 多行注释2.1.3 文件编码声明注释 2.2 代码缩进2.3 编码规范2.3.1 命名规范…...
AI学习指南机器学习篇-KNN的优缺点
AI学习指南机器学习篇-KNN的优缺点 在机器学习领域中,K最近邻(K-Nearest Neighbors,KNN)算法是一种十分常见的分类和回归方法之一。它的原理简单易懂,但在实际应用中也存在一些优缺点。本文将重点探讨KNN算法的优缺点…...
全网最全!25届最近5年上海理工大学自动化考研院校分析
上海理工大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试…...
LANG、LC_MESSAGES和LC_ALL
在Linux系统中,环境变量LANG、LC_MESSAGES和LC_ALL用于控制系统和应用程序的语言和区域设置(locale)。它们的具体作用如下: LANG: LANG是最基本的环境变量,用于指定系统的默认语言和区域设置。它是一个全局…...
生成式AI和LLM的一些基本概念和名词解释
1. Machine Learning 机器学习是人工智能(AI)的一个分支,旨在通过算法和统计模型,使计算机系统能够从数据中学习并自动改进。机器学习算法使用数据来构建模型,该模型可用于预测或决策。机器学习应用于各种领域&#x…...
python项目(课设)——飞机大战小游戏项目源码(pygame)
主程序 import pygame from plane_sprites import * class PlaneGame: """ 游戏类 """ def __init__(self): print("游戏初始化") # 初始化字体模块 pygame.font.init() # 创建游戏…...
Chatgpt教我打游戏攻略
宝可梦朱 我在玩宝可梦朱的时候,我的同行队伍里有黏美儿,等级为65,遇到了下雨天但是没有进化,为什么呢? 黏美儿(Goomy)要进化为黏美龙(Goodra),需要满足以下…...
最全信息收集工具集
吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 所有的攻防、渗透第一步肯定是信息收集了…...
redis类型解析汇总
redis类型解析汇总 介绍数据类型简介主要数据类型:衍生类型: 字符串(String)底层设计原理图例设计优势字符串使用方法设置字符串值获取字符串值获取和设置部分字符串获取字符串长度追加字符串设置新值并返回旧值递增/递减同时设置…...
Unity3d自定义TCP消息替代UNet实现网络连接
以前使用UNet实现网络连接,Unity2018以后被弃用了。要将以前的老程序升到高版本,最开始打算使用Mirro,结果发现并不好用。那就只能自己写连接了。 1.TCP消息结构 (1). TCP消息是按流传输的,会发生粘包。那么在发射和接收消息时就需要对消息进行打包和解包。如果接收的消息…...
git fetch 和 git pull区别
git branch //查看本地所有分支 git branch -r //查看远程所有分支 git branch -a //查看本地和远程的所有分支 git branch <branchname> //新建分支 git branch -d <branchname> //删除本地分支 git branch -d -r <branchname> //删除远程分支&#x…...
冲击2024年CSDN博客之星TOP1:CSDN文章质量分查询在哪里?
文章目录 一,2023年博客之星规则1,不高的入围门槛2,[CSDN博文质量分测评地址](https://www.csdn.net/qc) 二,高分秘籍1,要有目录2,文章长度要足够,我的经验是汉字加代码至少1000字。3࿰…...
高性能并行计算华为云实验一:MPI矩阵运算
目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建矩阵乘法源码 3.1.1 实验说明 3.1.2 实验步骤 3.2 创建卷积和池化操作源码 3.2.1 实验说明 3.2.2 实验步骤 3.3 创建Makefile文件并完成编译 3.4 建立主机配置文件与运行监测 四、实验结果与分析 4.1 矩阵乘法…...
从双非到科软:我的22408备考复盘与实战指南
1. 双非逆袭科软:我的备考心路历程 作为一名双非院校的计算机专业学生,我深知考研这条路有多难走。去年这个时候,我也和屏幕前的你一样,在知乎、贴吧疯狂搜索各种经验贴,既期待又忐忑。现在回想起来,从3月到…...
如何用XUnity.AutoTranslator打破游戏语言壁垒:终极实时翻译插件指南
如何用XUnity.AutoTranslator打破游戏语言壁垒:终极实时翻译插件指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为看不懂的外语游戏而烦恼吗?XUnity.AutoTranslator正是你…...
NotebookLM信息冗余顽疾破解指南(92%用户忽略的3层语义去重机制)
更多请点击: https://intelliparadigm.com 第一章:NotebookLM信息去重的核心挑战与认知重构 NotebookLM 作为 Google 推出的基于用户文档构建的 AI 助手,其核心能力依赖于对上传资料的语义理解与上下文关联。然而,当用户批量导入…...
一行环境变量,给 Claude Code 省下 90% 成本
一行环境变量,给 Claude Code 省下 90% 成本 你以为是模型太贵,其实是缓存“漏风”了 🧊💸最近不少开发者发现一个诡异现象: 用了 Claude Code 接国内模型,比如 DeepSeek、Kimi、智谱 AI 后,突然…...
第一卷第4章:接口而非实现编程
第一卷第4章:接口而非实现编程 目录介绍 00.先回答上篇思考题 0.1 上篇遗留三道题 0.2 云迁移6万行代码 0.3 五次反转补锅 0.4 灵魂五连问 01.从一个搬迁切入 1.1 上云搬迁案例...
FPGA+DDR3+千兆以太网:构建实时高清图像传输与显示系统(附源码)
1. 实时高清图像传输系统的核心价值 想象一下这样的场景:医疗内窥镜手术中,医生需要实时查看1080p高清影像;工业检测线上,高速摄像头每秒产生数百帧4K画面;无人机航拍时,需要将拍摄的高清视频实时回传到地面…...
为什么顶尖纳米实验室已停用传统文献管理工具?NotebookLM私有知识中枢部署避坑清单(限内部研究员参考)
更多请点击: https://codechina.net 第一章:NotebookLM纳米技术研究 NotebookLM 是 Google 推出的基于 AI 的研究协作者工具,其核心能力在于对用户上传的私有文档进行深度语义理解与上下文推理。在纳米技术这一高度跨学科、文献密集的研究领…...
多智能体强化学习中的分层安全架构设计与实现
1. 多智能体强化学习中的分层安全架构设计在复杂动态环境中实现多智能体系统的安全协调一直是个极具挑战性的问题。传统方法要么过于保守导致效率低下,要么缺乏理论安全保障。我们提出的分层安全架构通过将智能体邻近空间划分为三个明确区域,为这一问题提…...
Cursor Pro终极破解教程:三步免费解锁AI编程助手完整指南
Cursor Pro终极破解教程:三步免费解锁AI编程助手完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your …...
PHP开发实战:高频难点解析与优化方案
PHP常见技术难点梳理与实战应用案例解析 一、引言 PHP作为主流后端开发语言,凭借开发高效、部署便捷、生态完善等优势,长期应用于网站开发、接口服务、小程序后端、企业管理系统等各类项目。在实际开发过程中,开发者常会遇到语法逻辑混乱、性…...
