ES中的分布式搜索

一.查询阶段 查询会广播到索引的每个分片(主分片或者副本分片),每个分片搜索并构建一个匹配结果的优先队列(存储top-n文档有序列表) 步骤: 1.发送请求到协调节点,协调节点创建一个from+size的空优先队列 2.协调节点广播到索引每个分片中,每个分片查询并存储from+size的优先队列 3.每个分片返回优先队列当中的ID和排序值给协调节点,协调节点合并到自己的优先队列产生结果列表 二、取回阶段 1.协调节点分辨需要取回的结果并提交给对应分片取回 2.分片丰富文档(比如指定查询字段、高亮等信息) 3.协调节点取回所有文档则返回给客户端

备注:由于协调节点需要分片数量*(from+size)大小的队列来取结果。所以尽量不要使用深分页(传递较大的from和size)

三、影响搜索 1.可使用preference控制分片或节点处理请求 参考:https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-preference.html 2.可使用time_out设定每个分片允许处理数据的最大时间 备注:达到time_out时间则会把已知结果返回 3.可以使用routing参数指定搜索相关的分片 4.可以使用search_type(强烈建议不要在生产环境使用!!!!)

四、游标查询 原理:游标查询先做查询初始化,然后批量拉取结果 用途:解决深分页问题

1.查询初始化 GET /megacorp/employee/_search?scroll=1m {   “query”:{      “match”: {        “about”:”build”     }   },   “sort” : [“_doc”],   “size” : 2 } 备注:使用_doc是最有效的排序方式

2.根据返回的_scroll_id做下一批的查询 GET _search/scroll {   “scroll”:”1m”,   “scroll_id”: “DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAA0XFjEweWo3eTR4VHBDclgyWnRSY2lGbXcAAAAAAAANGRYxMHlqN3k0eFRwQ3JYMlp0UmNpRm13AAAAAAAADSIWcFNUX2pjYmdUVE9XcHhRNzd3ZkNSQQAAAAAAAA0aFjEweWo3eTR4VHBDclgyWnRSY2lGbXcAAAAAAAANGBYxMHlqN3k0eFRwQ3JYMlp0UmNpRm13” }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏macOS 开发学习

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(二)

1.1 选中ViewController.m文件,添加鼠标左键点击事件监听,实现代码如下图:

12230
来自专栏Python爬虫与算法进阶

学习Git(二)基本操作

Git 基础操作 1. 创建版本库 什么是版本库呢?版本库又名仓库,英文名 repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被 G...

365120
来自专栏我和PYTHON有个约会

Django来敲门~第一部分【2. 安装】

安装完成后,我们需要验证安装是否成功,可以执行如下命令,通过查看安装的django版本信息来验证

12320
来自专栏大数据挖掘DT机器学习

python模拟新浪微博登陆功能(新浪微博爬虫)

有些网站设置了权限,只有在登录了之后才能爬取网站的内容,如何模拟登录,目前的方法主要是利用浏览器cookie模拟登录。 浏览器访问服务器的过程 在用户访问网页时...

1K50
来自专栏草根专栏

Git -- 分支与合并 (命令行+可视化工具p4merge) Fast Forward 合并禁用 Fast Forward 合并自动合并解决合并的冲突

基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. ? 至少应该准备一个feature分支之类的, 把变化都隔离开...

36790
来自专栏前端下午茶

Git 学习笔记

最近公司的代码管理工具要从SVN转到Git上,因此虽然之前用过Git,但是都是一些简单的推送提交,因此还是有必要进行一些系统的学习,这里做一下笔记,以备后询,且...

9510
来自专栏腾讯DevOps

Git快速入门

git作为现在最为流行的版本管理系统,大部分公司都使用git进行版本控制,并且最大程序员交友网站github也是在git的基础上建立的。 很多人认为git难,在...

20540
来自专栏农夫安全

常见Web源码泄露总结

? .hg源码泄漏 漏洞成因: hg init的时候会生成.hg e.g.http://www.example.com/.hg/ 漏洞利用: 工具:dvc...

47460
来自专栏jouypub

CentOS7上配置Swap交换空间

swap通常在传统机械硬盘上表现更好,在SSD上使用swap可能会造成问题,尤其是硬件老化之后。所以,对于DigitalOcean以及其他使用基于SSD的云主机...

37310
来自专栏静默虚空的博客

分布式版本控制系统 Git 教程

简介 Git 是什么? Git 是一个开源的分布式版本控制系统。 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统...

25760

扫码关注云+社区

领取腾讯云代金券