Elasticsearch之深入了解Search的运行机制
- Search 执行的时候实际分两个步骤运作的
- Query 阶段
- Fetch 阶段 - Query-Then-Fetch
Query阶段
Fetch阶段
相关性算分问题
- 相关性算分在shard与shard间是相互独立的,也就意味着同一个term的IDF值在不同shard上是不同的。文档的相关性算分和他所处的shard相关
- 在文档数量不多是,会导致相关性算分严重不准的情况发生
- 解决思路有两个:
- 一是设置分片数为1个,从根本上排除问题,在问当数量不多的时候可以考虑该方案,比如百万到千万级别的文档数量
- 二是使用 DFS Query-then-Fetch 查询方式
- DFS Query-then-Fetch 是在拿到所有文档后再重现完整的计算一次相关性算分,耗费更多的cpu和内存,执行新能底下,一般不建议使用。使用方式如下:
排序
- es 默认会采用相关性算分排序,用户可以设定sorting 参数来自行设定排序规则
- 按照字符串排序比较特殊,因为es 有 text和keyword 两种类型,针对text类型排序,如下所示:
- 针对 keyword类型排序,可以返回预期结果
- 排序的过程实质是对字段原始内容排序的过程,这个过程中倒排索引无法发挥作用,需要用到正排索引,也是通过文档Id和字段可以快速得到字段原始内容。
- es对此提供了3种实现方式:
- fielddata 默认禁用
- doc values 默认启用,除了 text 类型
Fielddata vs DocValues
Fielddata
- Fielddata 默认是关闭的,可以通过如下api开启
- 此时字符串是按照分词后的term排序,往往结果很难复合预期
- 一般是在对分词做聚合分析的时候开启
Doc Values
- Doc Values 默认是启用的,可以在创建索引的时候关闭:
- 如果后面要再开启 doc values,需要做 reindex 操作
- 可以通过该字段获取 fielddata 或者 doc values 中存储的内容
Elasticsearch之深入了解Search的运行机制相关推荐
- 傻傻分不清的javascript运行机制
学习到javascript的运行机制时,有几个概念经常出现在各种文章中且容易混淆.Execution Context(执行环境或执行上下文),Context Stack (执行栈),Variable ...
- 从hello world 说程序运行机制
http://www.cnblogs.com/yanlingyin/archive/2012/03/05/2379199.html 开篇 学习任何一门编程语言,都会从hello world 开始.对于 ...
- js 多个定时器_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(二)
作者:撒网要见鱼 https://segmentfault.com/a/1190000012925872 本文接上篇 <从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(一)> ...
- session对象运行机制
当你看到 "会话" 这个词的时候,你会怎么理解呢?是交流.对话的意思吗?那毫无疑问绝对是的啦,只不过那是传统意义上的,或者说是日常生活中的意思,在计算机科学领域,它的意思就要引申一 ...
- http和https的区别 与 SSL/TLS协议运行机制的概述
http和https的区别 与 SSL/TLS协议运行机制的概述 参考1 1 http 是不使用的SSL/TSL的通信通道 窃听风险:第三方获取通信内容 篡改风险:修改通信内容 冒充风险:冒充他人身份 ...
- 第3课:SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错...
本期内容: 解密Spark Streaming Job架构和运行机制 解密Spark Streaming容错架构和运行机制 理解SparkStreaming的Job的整个架构和运行机制对于精通Spar ...
- 浅谈SQL Server内部运行机制
原文:浅谈SQL Server内部运行机制 对于已经很熟悉T-SQL的读者,或者对于较专业的DBA来说,逻辑的增删改查,或者较复杂的SQL语句,都是非常简单的,不存在任何挑战,不值得一提,那么,SQL ...
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...
- WebForm页面生命周期及asp.net运行机制
转载至:https://www.cnblogs.com/liangxiaofeng/p/5620033.html 1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请 ...
最新文章
- 任务调度算法题Java_一个任务调度问题-----算法导论
- 北航计算机考研 跨考,过来人分享:给外校跨考北航同学的建议
- python组合数据类型有哪些_Python学习之组合数据类型
- 闫智宣的开发版_Android
- static的应用以及静态与非静态的区别
- 嵌入式知识概要(1)
- mac iterm2 安装 lrzsz rz sz命令
- 二叉树常见算法总结(java)
- 如何将多张二维码合成一个新的动态二维码进行随机扫码
- SQL数据库学习,常用语句查询大全
- kali更新grub修复双系统windows10引导启动项
- java调用腾讯企业邮箱给谷歌(gmail)邮箱发送邮件丢失或进入垃圾邮箱
- 2015-2016 Petrozavodsk Winter Training Camp, Moscow SU Trinity Contest(Gym 100962)
- 专利修改:solidworks出线条图
- 一文读懂MES系统生产调度管理功能
- Ubuntu14.04+Texlive2014+LYX-Linux下LYX的中文配置方案
- 【多线程】采用Callable接口创建线程
- suricata 命令
- 企业数字化转型的道法术器之我见
- timesten mysql_Timesten(TT)和ORACLE执行效率测试
热门文章
- 实验室管理好助手——Bio-lab
- Nature子刊:南土所贾仲君组-稻田甲烷氧化的微生物机制
- QIIME 2用户文档. 17鉴定和过滤嵌合体序列q2-vsearch(2019.7)
- matplotlib可视化时间序列数据、并高亮时间序列中的指定区域(Highlight a Region of Time-Series Plot with Matplotlib)
- R语言基于多字段(多数据列、multiple columns)对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法、data.table、dplyr等方案
- R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比
- R语言ggpattern填充各种色彩、形状、纹理、图片到ggplot2可视化图像中示例
- R语言构建xgboost模型:使用xgboost模型训练tweedie回归模型,特征工程(dataframe转化到data.table、独热编码、缺失值删除、DMatrix结构生成)
- 密度聚类OPTICS算法
- 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战