首页
学习
活动
专区
圈层
工具
发布

假如我来设计scroll-Elasticsearch的遍历操作分析

无序scroll分析 说了这么多,回到正题,首先来简单介绍下Es的scroll过程: 发送一个普通的query至服务端,同时在请求中带上scroll参数表明这是一个scroll请求 服务端返回结果,并带上特殊的...scroll_id来记录请求上下文 调用特殊的_scroll请求并带上最新的scroll_id来继续后续请求 先来分析下Es1版本对scan的处理,上面说到了scan其实是从每个shard中都取size...有序scroll分析 说完高效的无序scroll,再来说说带排序条件的scroll请求,一个索引的shard之间的数据一般是根据_id通过一致性hash来分配的,_id可以理解为索引文档的唯一键(可以用户自行设置或者让...scroll的限制 到这里,我们回来看看scroll请求的前提条件: 记录每次请求的上下文 保证遍历的数据稳定不变 每次scroll请求都需要知道上次请求停止的点(偏移量),所以上下文是必须要记录的。...当然通过上面的分析,能通过无序scroll遍历数据就通过无序scroll操作也是提高性能表现的好手段。

66420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Elasticsearch Java API 搜索之Scrolls(四)

    /5.6/search-request-scroll.html) 一般搜索请求都是返回一"页"数据,无论数据量多大都一起返回给用户,Scroll API可以允许我们检索大量数据(甚至全部数据)。...Scroll API允许我们做一个初始阶段搜索并且持续批量从Elasticsearch里拉取结果直到没有结果剩下。这有点像传统数据库里的cursors(游标)。...Scroll API的创建并不是为了实时的用户响应,而是为了处理大量的数据(Scrolling is not intended for real time user requests, but rather...,初始搜索请求应该在查询中指定 scroll 参数,告诉 Elasticsearch 需要保持搜索的上下文环境多长时间(滚动时间) .setQuery(qb) .setSize...所以当我们不在使用滚动时要尽快使用Clear-Scroll API进行清除。

    4.2K40

    Elasticsearch核心API之reindex API的应用及原理分析

    什么是Elasticsearch的reindex?本文基于Elasticsearch 7.14版本源码。...功能介绍在 Elasticsearch 7.14 中,Reindex API是一个核心数据管理工具,用于跨索引高效复制,转换文档或索引迁移。...reindex原理与源码分析reindex原理从调用reindex API发起reindex任务,至reindex任务执行完成大致分为以下几个阶段:reindex API调用验证阶段接收rest api...reindex请求构造阶段在接受到客户端提交的请求并验证完成后,Elasticsearch便要开始基于客户端提交的语句开始请求的构造。构造source部分。需要配置远程索引,索引名,查询条件。...需要兼容不同版本的api限制。解析script和conflict字段。用于支持脚本和冲突策略。

    19410

    Elasticsearch——Rest API中的常用用法

    本篇翻译的是Elasticsearch官方文档中的一些技巧,是使用Elasticsearch必不可少的必备知识,并且适用于所有的Rest Api。 返回数据格式化 当在Rest请求后面添加?...human=true,返回的数据会有很好的可读性,比如: time:3600 会显示为 time:1h size:1024 会显示为 1kb 常用的Date Math 在Elasticsearch中日期数学表达式是很常用的...所有的API都接受一个参数——filter_path,这个参数支持逗号分隔,可以同时填写多个值。...Number 所有的API都支持以字符串的方式代表JSON中的数字类型。 Date 支持的类型上面都说过了... Geo Geo类型主要用于地图一类的数据,这里就先不介绍了。...返回结果——驼峰式 所有的API都接受一个case参数,如果设置为camelCase,那么所有的名称都会以驼峰式的形式返回。

    1.1K70

    Elasticsearch Java API 索引的增删改查(二)

    本节介绍以下 CRUD API: 单文档 APIs Index API Get API Delete API Delete By Query API Update API 多文档 APIs Multi...Get API Bulk API Using Bulk Processor Multi Get API Bulk API 注意:所有的单文档的CRUD API,index参数只能接受单一的索引库名称,或者是一个指向单一索引库的...Index API Index API 允许我们存储一个JSON格式的文档,使数据可以被搜索。文档通过index、type、id唯一确定。...get API 文档 配置线程 operationThreaded 设置为 true 是在不同的线程里执行此次操作 下面的例子是 operationThreaded 设置为 false : GetResponse...Bulk API,批量插入: import static org.elasticsearch.common.xcontent.XContentFactory.*; BulkRequestBuilder

    4.1K10

    如何解决Elasticsearch的深度翻页问题

    scroll scroll api提供了一个全局深度翻页的操作,首次请求会返回一个scroll_id,使用该scroll_id可以顺序获取下一批次的数据;scroll 请求不能用来做用户端的实时请求,...例如我们使用scroll翻页获取包含elasticsearch的Twitter,那么首次请求的语句如下: POST /twitter/_search?...==" } 针对scroll api下,同一个scroll_id无法并行处理数据的问题,es又推出了sliced scroll,与scroll api的区别是sliced scroll可以通过切片的方式指定多...sliced scroll sliced scroll api 除指定上下文保留时间外,还需要指定最大切片和当前切片,最大切片数据一般和shard数一致或者小于shard数,每个切片的scroll操作和...scroll api的操作是一致的: GET /twitter/_search?

    3K30

    ElasticSearch2.1的java api批量建索引方法

    es里面提供了两种批量建索引的方法: 1,使用 Bulk Api 特点是:使用比较简单,但控制不够灵活 2,使用Bulk Processor 特点是:使用稍麻烦,控制非常灵活...至于为什么要批量建索引,相信大伙已经不陌生了,为的就是提高写入效率,效率,效率!...数量大的情况下,10ms性能的提升,都有可能带来巨大的优化效果,所以时时刻刻考虑系统的性能无疑是 一个优秀的工程师必须具备的一种素质。...下面来看下在Java中,具体怎么用: (一)关于Bulk Api用法,这里直接引用es官网的例子了,大伙请直接看截图: ?...(二)使用Bulk Processor处理也比较简单,注意参数的设置,会影响索引的性能: BulkProcessor实例初始化之后,就可以直接 游标读取添加就行: ?

    79370

    由Elasticsearch的API命令,引发的金融业生产故障

    序言 图示:Elasticsearch目前在DB-Engine综合排名第8 Elasticsearch博大精深,提供了非常丰富的应用场景功能,也提供了丰富的API命令操作,有些API非常好用,有的API...后面经过在本地开发环境模拟压测,终于确定了问题来源,是客户端的某个集群管理操作 API引起的。...最终,找到了 Cluster State Api 统计命令引起的,客户端应用程序每次做实际业务前,都会调用这个API命令获取集群一些索引与Mapping信息,由于客户端是采用多线程设计,且部署多个实例,...transport client 参考文档 https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html...spring data elasticsearch 参考文档 https://docs.spring.io/spring-data/elasticsearch/docs/4.2.6/reference

    79431

    详述 Elasticsearch 通过 RESTful API 查询索引信息的方法

    其中, 第一种方式是功能最全的,Elasticsearch 的所有操作情形,都可以通过命令来实现; 第二种方式则略有局限,因为 Elasticsearch 的对外 API 仅提供了部分的操作接口。...以 Java 语言为例,Elasticsearch 提供的接口文档为:Java API,可能我们翻遍整个 API 文档也找不到对应_cat/indices命令的接口。...解决方案 虽然 Elasticsearch 没有为我们提供对应所有命令的 Java API 接口,但其却为我们提供了所有 RESTful API 形式的接口。...因此,解决方法也很简单,只要我们自己编程代码,通过 Elasticsearch 的 RESTful API 接口获取相应的结果即可!...在这里,有两点需要我们特别注意的事情,分别为: 接口IP,为 Elasticsearch 集群中任意主节点的 IP 即可; 端口号,对外暴露的 RESTful API 端口为 9200,而 9300 为节点间通讯端口

    1.2K20
    领券