57.fielddata预加载机制以及序号标记预加载
2024-09-06 13:03:53
如果真的要对分词的field执行聚合,那么每次都在query-time的同时由es生成fielddata并加载到内存中来,速度可能会比较慢,性能很差,改善性能的方式就是预先生成fielddata值并加载到内存中去。
一、fielddata预加载
POST /test_index/_mapping/test_type
{
"properties": {
"test_field": {
"type": "string",
"fielddata": {
"loading" : "eager"
}
}
}
}
这样就把fielddata的生成从query-time变为index-time,在建立倒排索引的时候,会同步生成fielddata并且加载到内存中来,这样的话,对分词field的聚合性能当然会大幅度增强。
二、序号标记预加载
在一些doc中会有很多重复值,es在加载到内存时不会完全加载这些重复的值,只会加载一些序号标记,这样就可以大幅度的减少内存的使用。比如有如下四个doc,值分别对应:
- doc1: status1
- doc2: status2
- doc3: status2
- doc4: status1
在有很多重复值的情况,es会进行global ordinal标记
- status1 标记为 0
- status2 标记为 1
这样这四个doc所对应的标记就是:
- doc1: 0
- doc2: 1
- doc3: 1
- doc4: 0
建立的fielddata也会是这个样子的,这样的好处就是减少重复字符串的出现的次数,减少内存的消耗
POST /test_index/_mapping/test_type
{
"properties": {
"test_field": {
"type": "string",
"fielddata": {
"loading" : "eager_global_ordinals"
}
}
}
}
最新文章
- iOS 根据银行卡号判断银行名称
- Hadoop op 1)
- js中的单体对象
- Linux环境变量(小马哥推荐)
- JS 頁面實時更新時間
- offie2010设置前两页和后面显示不同页码的方法
- mysql建表---级联删除
- DATA VISUALIZATION – PART 1
- Java 缩写总结
- Dapper使用技巧分享
- pandas DataFrame(5)-合并DataFrame与Series
- LeetCode--012--整数转罗马数字(java)
- jmeter之 jp@gc - Stepping Thread Group
- 基本控件文档-UISegment属性
- 解决javaWEB 下载文件中文名称乱码问题
- [Transducer] Step by Step to build a simple transducer
- log4cplus的安装与使用初步
- 泛型约束-swift
- POJ2240:Arbitrage(最长路+正环)
- abp 列表和明细页面的规则说明
热门文章
- 如何在Mac OS X 中运行Lua (Running Lua on Mac OS X)
- Opencv+Zbar二维码识别(一维码校正)
- 用React &; Webpack构建前端新闻网页
- 34.无废话ExtJs 入门教程十八[树:TreePanel]
- CodeForces 515C Drazil and Factorial (水题)
- 慕课网4-2 编程练习:jQuery祖先后代选择器小案例
- SpringBoot2.x版本整合SpringSecurity、Oauth2进行password认证
- swoole之 swoole_process 应用于TP框架
- 洛谷P1010 幂次方
- ADSI和其他内容