52_ElasticSearch doc value机制内核级原理

52_ElasticSearch doc value机制内核级原理

更多干货

  • 分布式实战(干货)
  • spring cloud 实战(干货)
  • mybatis 实战(干货)
  • spring boot 实战(干货)
  • React 入门实战(干货)
  • 构建中小型互联网企业架构(干货)
  • python 学习持续更新
  • ElasticSearch 笔记

一、概述

  • doc value原理(正排索引)
  • index-time生成
  • 核心原理
  • 性能问题

二、doc value原理(正排索引)

1、index-time生成

PUT/POST的时候,就会生成doc value数据,也就是正排索引

2、核心原理与倒排索引类似

正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc value正排索引的性能

如果os cache内存大小不足够放得下整个正排索引,doc value,就会将doc value的数据写入磁盘文件中

3、性能问题:给jvm更少内存,64g服务器,给jvm最多16g

  • es官方是建议,es大量是基于os cache来进行缓存和提升性能的,不建议用jvm内存来进行缓存,那样会导致一定的gc开销和oom问题
  • 给jvm更少的内存,给os cache更大的内存
  • 64g服务器,给jvm最多16g,几十个g的内存给os cache
  • os cache可以提升doc value和倒排索引的缓存和查询效率

三、column压缩

例如 正排索引:

doc1: 550
doc2: 550
doc3: 500

对于以上索引存储:合并相同值,550,doc1和doc2都保留一个550的标识即可

  • 1、所有值相同,直接保留单值
  • 2、少于256个值,使用table encoding模式:一种压缩方式
  • 3、大于256个值,看有没有最大公约数,有就除以最大公约数,然后保留这个最大公约数

最大公约数例子:

doc1: 36
doc2: 24
其中36和 24的最大公约数为6 
--> doc1: 6, doc2: 4
--> 保留一个最大公约数6的标识,6也保存起来

  • 4、如果没有最大公约数,采取offset结合压缩的方式:
  • 总的思路 doc value 进行压缩,尽量减少doc value

四、disable doc value

如果的确不需要doc value,比如聚合等操作,那么可以禁用,减少磁盘空间占用


PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "my_field": {
          "type": "keyword"
          "doc_values": false 
        }
      }
    }
  }
}

相关文章

  • ElasticSearch 笔记

  • 1_ElasticSearch使用term filter来搜索数据

  • 2_ElasticSearch filter执行原理 bitset机制与caching机制

  • 3_ElasticSearch 基于bool组合多个filter条件来搜索数据

  • 4_ElasticSearch 使用terms搜索多个值

  • 5_ElasticSearch 基于range filter来进行范围过滤

  • 6_ElasticSearch 控制全文检索结果的精准度

  • 7_ElasticSearch term+bool实现的multiword搜索原理

  • 8_基于boost的搜索条件权重控制

  • 9_ElasticSearch 多shard场景下relevance score不准确

  • 10_ElasticSearch dis_max实现best fields策略进行多字段搜索

  • 11_ElasticSearch 基于tie_breaker参数优化dis_max搜索效果

  • 12_ElasticSearch multi_match语法实现dis_max+tie_breaker

  • 13_ElasticSearch multi_match+most fiels策略进行multi-field搜索

  • 14_ElasticSearch 使用most_fields策略进行cross-fields search

  • 15_ElasticSearch copy_to定制组合field进行cross-fields搜索

  • 16_ElasticSearch 使用原生cross-fiels 查询

  • 17_ElasticSearch phrase matching搜索

  • 18_ElasticSearch 基于slop参数实现近似匹配

  • 19_ElasticSearch 使用match和近似匹配实现召回率与精准度的平衡

  • 20_ElasticSearch rescoring机制优化近似匹配搜索的性能

  • 21_ElasticSearch 前缀搜索、通配符搜索、正则搜索

  • 22_ElasticSearch 搜索推荐match_phrase_prefix实现search-time

  • 23_ElsaticSearch 搜索推荐ngram分词机制实现index-time更多干货

  • 24_ElasticSearch TF&IDF算法以及向量空间模型

  • 25_ElasticSearch 揭秘lucene的相关度分数算法

  • 26_ElasticSearch 四种常见的相关度分数优化方法

  • 27_ElasticSearch用function_score自定义相关度分数算法

  • 28_ElasticSearch误拼写时的fuzzy模糊搜索技术

  • 29_ElasticSearchIK中文分词器的安装和使用

  • 30_ElasticSearch IK分词器配置文件 以及自定义词库

  • ElasticSearchIK中文分词器的安装和使用

  • 日志管理ELK




你可能感兴趣的:(【构建高可用架构】,【大数据】,【ElatisSearch】)