`
weitao1026
  • 浏览: 1053551 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

elasticsearch 搜索结果的扫描 scan和滚动 scroll

 
阅读更多

scan 搜索类型和 scroll API 会一起用来从 elasticsearch 中获得大量文档,不会受到深度分页(deep pagination)的影响。

  • scroll 滚动搜索 允许我们进行一个初始搜索并保证批量从 Elasticsearch 中拉取结果直到没有更多结果。这看起来有点像传统数据库中的 cursor。滚动搜索会及时取一个快照。这不会受到后来对索引的改变的影响。通过保持旧数据来实现,所以可以看做是保持了在开始搜索时候的一个“视图”。
  • scan 深度分页的最耗资源的部分就是对结果的整体排序,但是如果我们关闭排序,那么可以消耗极少资源返回所有的文档。对这个情况,我们可以使用 scan 搜索类型。scan 告诉 elasticsearch 不去排序,而是仅仅从每个仍然有结果的分片中返回下一批(batch)。

要使用 scan-and-scroll,我们执行设置 search_typescan 的搜索请求,然后传递一个 scroll 参数告诉 elasticsearch 需要保持 scroll 开放多久:

GET /old_index/_search?search_type=scan&scroll=1m ...(1)
{
    "query": { "match_all": {}},
    "size": 1000
}
  • (1) 将 scroll 开放 1 分钟

对该请求的反应不会包含任何的命中 hits,但是会包含一个 _scroll_id,这是一个 64 位的字符串编码。现在我们将 _scroll_id 传递给 _search/scroll 来检索结果的第一批:

GET /_search/scroll?scroll=1m                                             ...(1)
c2Nhbjs1OzExODpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzExOTpRNV9aY1VyUVM
4U0NMd2pjWlJ3YWlBOzExNjpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzExNzpRNV9
aY1VyUVM4U0NMd2pjWlJ3YWlBOzEyMDpRNV9aY1VyUVM4U0NMd2pjWlJ3YWlBOzE
7dG90YWxfaGl0czoxOw==                                                     ...(2)
  • (1) 保持 scroll 再开放一分钟|
  • (2) _scroll_id 可以通过 body,URL,或者 query 参数 进行传递

注意到,我们这里又指定了 ?scroll=1m。这个 scroll 终结时间在我们每执行一次 scroll 请求时刷新,所以仅需要给我们足够的时间来处理当前结果的批,而不是整个匹配查询的文档。

这个scroll的响应包含第一批的结果。尽管我们指定了 size1000,我们获得了更多的文档。在 scan 的时候,size 作用在每个分片上,所以你将会在每批得到最大为 size * number_of_primary_shards 的文档。

注意:scroll 请求同样会返回一个新的 _scroll_id。每次我们产生下一个 scroll 请求,我们必须传递上一个 scroll 请求的 _scroll_id

若没有更多的命中,我们就处理完了所有匹配的文档。

注意:有些official Elasticsearch clients 提供 scan-and-scroll 帮助方法来提供易用的封装。



作者:Not_GOD
链接:http://www.jianshu.com/p/098896664bf7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

分享到:
评论

相关推荐

    02-Elasticsearch AI 大模型搜索引擎介绍与演示 meetup 成都 8.19 2023

    Elasticsearch AI 大模型搜索引擎是基于人工智能技术的搜索引擎,旨在提供高效、准确的搜索结果。该引擎结合了自然语言处理(NLP)和机器学习(ML)技术,能够处理大量数据并提供智能化的搜索结果。 Elasticsearch ...

    基于.netcore搜索封装ElasticSearch.zip

    这个名为"基于.netcore搜索封装ElasticSearch.zip"的压缩包,显然包含了一个针对.NET Core平台的Elasticsearch客户端库,方便开发者在.NET Core应用中集成和操作Elasticsearch。 Elasticsearch是一个开源的分布式...

    分布式搜索引擎Elasticsearch开发实战基础篇 (ElasticSearch、ELK、搜索引擎、Lucene).rar

    分享一套完整版视频课程——分布式搜索引擎Elasticsearch开发实战基础篇 (ElasticSearch、ELK、搜索引擎、Lucene),本教程旨在带领大家进入搜索引擎领域,从无到有,深入浅出的讲解了什么是搜索引擎,搜索引擎的...

    elasticsearch5.x的java实现搜索

    Elasticsearch(ES)是一款流行的开源全文搜索引擎,被广泛应用于日志分析、实时数据分析和复杂搜索场景。本教程将聚焦于Elasticsearch 5.x版本,并探讨如何通过Java API来实现搜索功能。 1. **Elasticsearch概述**...

    js平滑的页面滚动效果插件smoothScroll-Es5.js

    总的来说,"smoothScroll-Es5.js"作为一款基于jQuery的平滑滚动插件,为网页设计师和开发者提供了方便、高效的工具,以提升网页的用户体验。通过深入理解和恰当使用,可以进一步优化网站的导航和互动效果。

    ES查询客户端,elasticsearch可视化工具 elasticsearch查询客户端

    Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据检索、分析和管理。作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据...

    Nmap-ElasticSearch:前端导入ES中的Nmap Scan,前端进行搜索

    前端导入ES中的Nmap Scan,前端进行搜索 扫描器: 在 ElasticSearch 中运行 nmap 和导入的 Python 脚本。 初始配置:编辑scanner.py 配置elasticsearch主机ESHOST= ['host1','host2'] 配置 elasticSearch 索引...

    elasticsearch5.5.2实现搜索结果高亮显示和搜索建议

    在本文中,我们将深入探讨如何使用Elasticsearch 5.5.2的Java API来实现搜索结果的高亮显示和搜索建议。Elasticsearch是一个强大的分布式搜索引擎,它提供了丰富的搜索功能,包括全文检索、结构化搜索、分析以及实时...

    人工智能-项目实践-搜索引擎-SpringBoot+ElasticSearch全文搜索引擎

    在本项目实践中,我们将深入探讨如何使用Spring Boot和Elasticsearch构建一个全文搜索引擎。这是一个典型的人工智能应用,其中搜索引擎是关键组件,用于处理和检索大量数据。让我们逐一解析这个项目涉及的技术点。 ...

    Elasticsearch Demo 读取word内容写入到Es上并展示在WebFrom页面上

    **Elasticsearch(ES)** 是一个开源的全文搜索引擎,基于Lucene构建,设计用于分布式、可扩展的数据存储和搜索。在这个"Elasticsearch Demo"项目中,我们将学习如何将Word文档的内容读取并写入Elasticsearch,以及...

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个开源的高拓展的分布式全文搜索引擎它可以近乎实时的存储、检索数据;本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用...

    ElasticSearch Java API 中文文档

    标签《ES Java API 中文文档》强调了文档的内容属性,它属于ElasticSearch的一个重要组成部分,即用Java语言进行数据交互和操作的应用程序接口部分。 从部分内容中可以提取出以下知识点: 1. **Transport Client**...

    elasticsearch 8.11.3 windows安装包

    Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,...

    java连接elasticsearch将搜索结果高亮显示并分页。

    java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。...我本地的搜索是可以拼音和分词(需要插件可以看我另一个资源),你们搜索的时候可以先将elasticsearch配置完善,java使用的时候会顺心很多。

    相关性搜索利用Solr与Elasticsearch创建智能应用

    资源名称:相关性搜索 利用Solr与Elasticsearch创建智能应用内容简介:《相关性搜索:利用Solr与Elasticsearch创建智能应用》揭开了相关性搜索的神秘面纱,告诉大家如何将 Elasticsearch与 Solr这样的搜索引擎作为可...

    Elasticsearch工具类

    Elasticsearch是一种基于Lucene的分布式、RESTful搜索和分析引擎,广泛用于实时大数据分析和检索。在Java开发中,我们通常会创建一个专门的工具类来处理Elasticsearch相关的操作,以便更好地管理和控制数据。 在...

    elasticsearch未授权访问 漏洞修复

    Elasticsearch 是一个流行的开源全文搜索引擎,常用于大数据分析和实时数据检索。然而,如果没有正确配置安全设置,它可能会暴露于未授权访问的风险中,这可能导致数据泄露或恶意操作。本文将详细讲解如何修复 ...

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    Elasticsearch是一款基于Lucene的分布式搜索和分析引擎,适用于全文检索、结构化数据检索等场景。它能够实时地存储、检索和分析海量的数据,并且支持多种数据类型。由于其出色的性能和丰富的功能,Elasticsearch被...

    基于Spring框架开源ElasticSearch搜索

    本书以实例讲述如何在Spring框架之上搭建ElasticSearch开发,以及如何利用JPA建立、更新和删除索引,如何配置ElasticSearch Server的applicationContext等。

    Elastic Search搭建使用教程.pdf(内含ElasticSearch教程权威指南)

    Elasticsearch的实时特性意味着它能够在数据被索引后,几乎即时地提供搜索结果。这使得Elasticsearch非常适合于需要快速响应的场景,比如网站的实时搜索和推荐系统。Elasticsearch通过维护反向索引来提高搜索效率,...

Global site tag (gtag.js) - Google Analytics