1 基于doc value正排索引的聚合内部原理

搜索+聚合,写个示例

GET /test_index/test_type/_search 
{
    "query": {
        "match": {
            "search_field": "test"
        }
    },
    "aggs": {
        "group_by_agg_field": {
            "terms": {
                "field": "agg_field"
            }
        }
    }
}

es不是纯用倒排索引来实现聚合+搜索的

search_field

doc1: hello world test1, test2
doc2: hello test
doc3: world    test

hello    doc1,doc2
world    doc1,doc3
test     doc2,doc3
test1    doc1
test2    doc1

"query": {
    "match": {
        "search_field": "test"
    }
}

test --> doc2,doc3 --> search result, doc2,doc3

搜索test的时候
test --> doc2,doc3

这就是倒排索引的核心思想,这样搜索数据 是非常高效快速的,当然它也是有缺陷的,假如我们需要对数据做一些聚合操作,比如排序,分组时,lucene内部会遍历提取所有出现在文档集合 
的排序字段然后再次构建一个最终的排好序的文档集合list,这个步骤的过程全部维持在内存中操作,而且如果排序数据量巨大的话,非常容易就造成内存溢出和性能缓慢。

倒排索引+正排索引(doc value)的优势

建索引时会对开启docvalues的字段 ,额外构建一个已经排 好序的文档到字段级别的一个列式存储映射

2 doc value机制内核级原理

1、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和倒排索引的缓存和查询效率

2、column压缩

doc1: 550
    doc2: 550
    doc3: 500

合并相同值,550,doc1和doc2都保留一个550的标识即可

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

doc1: 36
    doc2: 24

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

(4)如果没有最大公约数,采取offset结合压缩的方式:

3、disable doc value

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

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

Elesticsearch(es)聚合搜索(入门到精通)3相关推荐

  1. Google搜索从入门到精通

    一篇不错的google搜索运用文章: from http://lilybbs.net/vd555635/main2.html [本篇全文] [回复本文] [本篇作者: 54tw] [本篇人气: 617 ...

  2. Google搜索从入门到精通【转】

    1.前言 我是在2000年上半年知道Google的.在这之前,我搜索英文信息通常用AltaVista,而搜索中文信息则常用Sina.但自使用了Google之后,它便成为我的Favorite Searc ...

  3. Google入门到精通(搜索方法经典)

    来自http://space.cenet.org.cn/user1/1267/4879.html 1,前言 我是在2000年上半年知道Google的.在这之前,我搜索英文信息通常用AltaVista, ...

  4. GOOGLE搜索从入门到精通v3.0 from:http://www.being.org.cn/tool/google.htm

    GOOGLE搜索从入门到精通v3.0 原文:http://www.lasg.ac.cn/docs/googlebook.html 作者:donquix 内容 1,前言 2,摘要 3,如何使用本文 4, ...

  5. [推荐]GOOGLE搜索从入门到精通v3.0

    作者:donquix (donquix@sina.com) ------------------------------ 内容 1,前言 2,摘要 3,如何使用本文 4,GOOGLE简介 5,搜索入门 ...

  6. GOOGLE搜索从入门到精通v3.0

    内容 1,前言 2,摘要 3,如何使用本文 4,GOOGLE简介 5,搜索入门 6,初阶搜索 6.1,搜索结果要求包含两个及两个以上关键字 6.2,搜索结果要求不包含某些特定信息 6.3,搜索结果至少 ...

  7. Elasticsearch(038):es中搜索之入门与分页搜索

    ES中搜索的方式分为两种,一种是通过URL参数进行搜索:另一种是通过POST中body请求参数进行搜索. 针对第一种我们进行简单的讲解,我们关注的核心放在第二种上面. 一.简单搜索(search) 1 ...

  8. ElasticSearch第一讲:ElasticSearch从入门到精通

    ElasticSearch第一讲:ElasticSearch从入门到精通 业内目前来说事实上的一个标准,就是分布式搜索引擎一般大家都用elasticsearch.本文是ElasticSearch第一讲 ...

  9. Elasticsearch7从入门到精通(简介、部署、原理、开发、ELK)

    Elasticsearch7从入门到精通(简介.部署.原理.开发.ELK) 第1章.Elasticsearch简介 1-1.Elasticsearch介绍 Elasticsearch官方网站:http ...

  10. 2018大数据学习路线从入门到精通

    最近很多人问小编现在学习大数据这么多,他们都是如何学习的呢.很多初学者在萌生向大数据方向发展的想法之后,不免产生一些疑问,应该怎样入门?应该学习哪些技术?学习路线又是什么?今天小编特意为大家整理了一份 ...

最新文章

  1. 玩“剪刀石头布“的脑机!密歇根大学开发由大脑意识精密控制的假肢
  2. 计算机二级C语言辅导j机构,全国计算机二级C语言公基础知识辅导.pptx
  3. IIS -2147467259 (0x80004005)
  4. python控制台执行代码字符串_编写Python脚本以使用控制台命令执行
  5. php 非常有用的高级函数PATH_SEPARATOR常量和set_include_path
  6. springboot websocket
  7. DB Manager access to SQLite
  8. JPM Coin 三部曲 (中) - 摩根大通为何青睐 Quorum 区块链
  9. 利用jquery实现数字千分位排版显示,使用0动态补全8位数
  10. 决用 Anaconda 完美解 Python2 和 python3 共存问题
  11. 成年人的21个规则,必须知道
  12. 怎么安装服务器打印组件,Windows Server2012 配置打印服务器图文教程
  13. oracle dbms_lob trim,DBMS_LOB包基础应用
  14. EfficientNet迁移学习(四) —— 损失函数解析
  15. 用PHOTOSHOP 1寸照片制作方法
  16. Python爬虫爬取豆瓣书籍数据
  17. CEO的1元年薪起源
  18. 6大科研神器,科研党必备,至少提高效率90%
  19. Windows 7 中文版命令行如何修改字符编码为UTF-8?
  20. 攻防世界 Wire1

热门文章

  1. python的反转_Python 反转
  2. photoshop合并图层:向下合并、合并选中层、合并可见图层、拼合图像操作
  3. matlab 飞机大战小游戏
  4. 对今日头条问答部分的预测-未来可能会挂掉
  5. 10个较好在线商业理念
  6. 计算LTE 峰值速率
  7. 责任编辑-www.saierhaowaigua.net
  8. Hbase GC调优原理分析
  9. Qt Creator插件ToDo
  10. # Logistic regression中的threshold