前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES中的分布式搜索

ES中的分布式搜索

作者头像
苦咖啡
发布2018-04-28 11:00:00
6910
发布2018-04-28 11:00:00
举报
文章被收录于专栏:我的博客

一.查询阶段 查询会广播到索引的每个分片(主分片或者副本分片),每个分片搜索并构建一个匹配结果的优先队列(存储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” }

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年6月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档