ElasticSearch 开发总结(九)——SearchType:DFS_QUERY_THEN_FETCH和QUERY_THEN_FETCH

ElasticSearch 开发总结(九)——SearchType:DFS_QUERY_THEN_FETCH和QUERY_THEN_FETCH-CSDN博客

1.SearchType
ES的搜索类型 有一个类SearchType(如下图示),关于该类的描述:

Search type represent the manner at which the search operation is executed.

ES的搜索分scatter/gather两个步骤:

scatter阶段:客户端向10个分片发起搜索请求;

gather阶段:10个分片完成搜索,符合条件的结果返回;

客户端,将返回的结果进行重新拍下和排名,最后返回给用户。

搜索面临的两个问题:

问题1:假如集群一个节点有10个分片,词语“土豆”在分片的相关性从分片0到分片9依次降低(即分片0存储词语“土豆”相关性最大,分片9相关性最小),如果搜索词语“土豆”需要10个分片的计算;

问题2:如果针对特定的分片进行搜索,因为词语“土豆”在每个分片的相关性不一致,可能返回的结果也存在偏差。

针对以上问题,ES给允许设置search_type来解决上述问题

SearchType共四种类型:

1、query and fetch

向索引的所有分片(shard)都发出查询请求,各分片返回的时候把元素文档(document)和计算后的排名信息一起返回。这种搜索方式是最快的。因为相比下面的几种搜索方式,这种查询方法只需要去shard查询一次。但是各个shard返回的结果的数量之和可能是用户要求的size的n倍。

2、query then fetch(默认的搜索方式)

如果你搜索时,没有指定搜索方式,就是使用的这种搜索方式。这种搜索方式,大概分两个步骤,第一步,先向所有的shard发出请求,各分片只返回排序和排名相关的信息(注意,不包括文档document),然后按照各分片返回的分数进行重新排序和排名,取前size个文档。然后进行第二步,去相关的shard取document。这种方式返回的document与用户要求的size是相等的。

3、DFS query and fetch

这种方式比第一种方式多了一个初始化散发(initial scatter)计算全局词频(term frequencies)步骤,有这一步,据说可以更精确控制搜索打分和排名。先对所有分片发送请求, 把所有分片中的词频和文档频率等打分依据全部汇总到一块, 再执行后面的操作。优点很明显,数据量是准确并且排名也准确,但性能是最差的。

4、DFS query then fetch

比第2种方式多了一个初始化散发(initial scatter)计算全局词频(term frequencies)步骤,过程与上一种类似,优点是排名准确,但返回的数据量不准确,可能返回(N*分片数量)的数据。。

2.日志分析,ElasticSearch的搜索有慢查询 
使用DFS_QUERY_THEN_FETCH类型进行搜索,运维反应有慢查询:

search_type[DFS_QUERY_THEN_FETCH], total_shards[5], source[{"from":0,"size":200,"query":{"bool":{"filter":[{"term":{"isMarketable":true}},{"term":{"isAppSale":true}},{"terms":{"saleType":[0,2]}},{"term":{"categoryId":10}}]}},"explain":false}], extra_source

 建议,把DFS_QUERY_THEN_FETCH类型修改为QUERY_THEN_FETCH(默认)类型

3.引用与知识
DFS类型的搜索,精度高,但是搜索的效率低;

非DFS类型的搜索,精度低,但是效率高;

DFS类型适合微调,大部分场景下应该用不到,除非业务有需要。

ElasticSearch版本6.6,官网:SearchType


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/HuoqilinHeiqiji/article/details/103460430

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis源码之:clion搭建cluster环境

cluster集群通常每个node节点都是一主N从的模式,此处为简化环境搭建,所有node节点均只有一个主节点。 在clion环境中,为方便debug,需要通过配置多个cmake application实现redis-server、redis-cli等源码debug模式启动。 一、配置…

费曼学习法 - 理工科的学习利器

费曼学习法是以物理学家理查德费曼(Richard Feynman)命名的一种高效的学习方法。它旨在帮助你深入理解复杂概念,并能够用简单的语言解释它们。费曼学习法是一个学习框架,能够帮你对给定主题进行深入理解,包含以下4个简…

【算法专题】动态规划之子序列问题

动态规划5.0 动态规划 - - - 子序列问题(数组中不连续的一段)1. 最长递增子序列2. 摆动序列3. 最长递增子序列的个数4. 最长数对链5. 最长定差子序列6. 最长的斐波那契子序列的长度7. 最长等差数列8. 等差数列划分Ⅱ - 子序列 动态规划 - - - 子序列问题…

HTML-表单

表单 概念&#xff1a;一个包含交互的区域&#xff0c;用于收集用户提供的数据。 1.基本结构 示例代码&#xff1a; <form action"https://www.baidu.com/s" target"_blank" method"get"><input type"text" name"wd&q…

宝塔部署 dvadmin3项目笔记

django-vue3-admin项目是一个优秀的基于Python和vue3的后端框架&#xff0c;可以在此基础上快速进行二次开发&#xff0c;目的是学习&#xff0c;记录通过宝塔部署该项目的一个步骤。 一、项目官网地址&#xff1a;dvadmin3 | Django-vue3-admin ​​​​​​ …

完成NAT实验

实验要求&#xff1a; 步骤一&#xff1a;配置vlan vlan b 2 3 interface GigabitEthernet 0/0/2 port link-type access port default vlan 2 interface GigabitEthernet 0/0/3 port link-type access port default vlan 3 interface GigabitEthernet 0/0/1 port link-type…

【PyTorch】使用PyTorch创建卷积神经网络并在CIFAR-10数据集上进行分类

前言 在深度学习的世界中&#xff0c;图像分类任务是一个经典的问题&#xff0c;它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集&#xff0c;包含了10个类别的60000张32x32彩色图像。在本博客中&#xff0c;我们将探讨如何使用PyTorch框架创建一个简…

C#,打印漂亮杨辉三角形(帕斯卡三角形)的源代码

杨辉 Blaise Pascal 这是某些程序员看完会哭的代码。 杨辉三角形&#xff08;Yanghui Triangle&#xff09;&#xff0c;是一种序列数值的三角形几何排列&#xff0c;最早出现于南宋数学家杨辉1261年所著的《详解九章算法》一书。 欧洲学者&#xff0c;最先由帕斯卡&#x…

Windows打开IE浏览器命令最简单的方法

问题场景&#xff1a; 许多插件或特定版本的系统需要使用ie浏览器来访问&#xff0c;window默认的ie浏览器是被禁用的如何快速打开ie浏览器解决问题 目录 问题场景&#xff1a; 测试环境&#xff1a; 检查环境是否支持&#xff1a; 问题解决&#xff1a; 方法一 方法二 方法…

03 SB实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)

1.1 自动展示所有信息 需求描述: 进入新闻首页portal/findAllType, 自动返回所有栏目名称和id 接口描述 url地址&#xff1a;portal/findAllTypes 请求方式&#xff1a;get 请求参数&#xff1a;无 响应数据&#xff1a; 成功 {"code":"200","mes…

书籍 - 华杉讲透孙子兵法 - 10

第九章 行军第九 侥幸是决策者最可怕的心态 懂兵法,不一定会用兵法,因为具体时候心态不一样。 原文 行军篇 孙子曰:凡处军、相敌,绝山依谷,视生处高,战隆无登,此处山之军也。绝水必远水;客绝水而来,勿迎之于水内,令半济而击之,利;欲战者,无附于水而迎客,视生处…

三元表达式使用

介绍&#xff1a; 使用三元表达式有以下优点&#xff1a; 代码简洁&#xff1a;相比常规的if-else语句&#xff0c;三元表达式能够以更简洁的方式实现相同的功能&#xff0c;减少了代码的数量和复杂性。可读性增强&#xff1a;由于其简洁性&#xff0c;三元表达式可以使代码更…

hex 尽然可以 设置透明度,透明度参数对比图 已解决

还不知道CSS Color Module Level 4标准早在2014年就推出8位hex和4位hex来支持设置alpha值&#xff0c;以实现hex和rgba的互转。这个办法可比6位HEX转RGBA简洁多了&#xff0c;先来简单解释一下&#xff1a; 8位hex是在6位hex基础上加后两位来表示alpha值&#xff0c;00表示完全…

【langchain】实战笔记-Langchain-Chatchat win10本地部署FAQ(持续更新)

在发布了《 Langchain-Chatchat-win10本地安装部署成功笔记&#xff08;CPU&#xff09;》后&#xff0c;有不少同学给我私信&#xff0c;说根据我的文档安装成功&#xff0c;也有不少人在安装过程报错了&#xff0c;我的文章是基于V0.2.6版本写的&#xff0c;大部分都是因为升…

Hadoop-MapReduce-MRAppMaster启动篇

一、源码下载 下面是hadoop官方源码下载地址&#xff0c;我下载的是hadoop-3.2.4&#xff0c;那就一起来看下吧 Index of /dist/hadoop/core 二、上下文 在上一篇<Hadoop-MapReduce-源码跟读-客户端篇>中已经将到&#xff1a;作业提交到ResourceManager&#xff0c;那…

自动化报告的前奏|使用python-pptx操作PPT(一)

自动化报告先从python-pptx开始 文章目录 1 python-pptx的基础属性1.1 新建幻灯片1.1.1 幻灯片布局的样式1.1.2 修改pptx模版大小1.1.3 指定模版生成1.1.4 创建幻灯片背景1.1.5 创建幻灯片备注信息1.1.6 设置幻灯片标题1.2 一些ppt元素/组件1.2.1 特殊符号1.2.2 placeholders1.…

数据结构——树的合集

目录 文章目录 前言 一.树的表达方式 1.树的概念 2.树的结点 3.树的存储结构 01.双亲表示法 顺序表示形式 优缺点说明 02.孩子表示法 03.孩子兄弟表示法 04.非类存储代码演示 二.二叉树 1.树的特点 2.二叉树 01.定义 02.二叉树的性质 03.满二叉树 04.完全二叉树…

uniapp封装公共的方法或者数据请求方法

仅供自己参考&#xff0c;不是每个页面都用到这个方法&#xff0c;所以我直接在用到的页面引用该公用方法&#xff1a; 1、新建一个util.js文件 export const address function(options){return new Promise((resolve,reject)>{uni.request({url:"https://x.cxniu.…

设计一个LRU(最近最少使用)缓存

约束和假设 我们正在缓存什么&#xff1f; 我们正在缓存Web Query的结果我们可以假设输入是有效的&#xff0c;还是需要对其验证&#xff1f; 假设输入是有效的我们可以假设它适应内存吗&#xff1f; 对 编码实现 class Node(object):def __init__(self, results):self.res…