如果真的要对分词的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"

}

}

}

}

最新文章

  1. iOS 根据银行卡号判断银行名称
  2. Hadoop op 1)
  3. js中的单体对象
  4. Linux环境变量(小马哥推荐)
  5. JS 頁面實時更新時間
  6. offie2010设置前两页和后面显示不同页码的方法
  7. mysql建表---级联删除
  8. DATA VISUALIZATION – PART 1
  9. Java 缩写总结
  10. Dapper使用技巧分享
  11. pandas DataFrame(5)-合并DataFrame与Series
  12. LeetCode--012--整数转罗马数字(java)
  13. jmeter之 jp@gc - Stepping Thread Group
  14. 基本控件文档-UISegment属性
  15. 解决javaWEB 下载文件中文名称乱码问题
  16. [Transducer] Step by Step to build a simple transducer
  17. log4cplus的安装与使用初步
  18. 泛型约束-swift
  19. POJ2240:Arbitrage(最长路+正环)
  20. abp 列表和明细页面的规则说明

热门文章

  1. 如何在Mac OS X 中运行Lua (Running Lua on Mac OS X)
  2. Opencv+Zbar二维码识别(一维码校正)
  3. 用React & Webpack构建前端新闻网页
  4. 34.无废话ExtJs 入门教程十八[树:TreePanel]
  5. CodeForces 515C Drazil and Factorial (水题)
  6. 慕课网4-2 编程练习:jQuery祖先后代选择器小案例
  7. SpringBoot2.x版本整合SpringSecurity、Oauth2进行password认证
  8. swoole之 swoole_process 应用于TP框架
  9. 洛谷P1010 幂次方
  10. ADSI和其他内容