在Elasticsearch中找一个复制索引的接口真难。现在官方唯一推荐的方法是使用游标获得被复制索引的所有document,然后使用bulkIndex新建立一个索引。
这个接口也很奇怪,第一次search竟然不返回数据。
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.client.Client; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.search.SearchHit; import donlian.es.ESUtils; /** * 使用scroll方法实现复制索引 * @author donlianli@126.com */ public class ScrollTest { public static void main(String[] args) { Client esClient = ESUtils.getClient(); SearchResponse searchResponse = esClient.prepareSearch(ESUtils.getIndexName()) //加上这个据说可以提高性能,但第一次却不返回结果 .setSearchType(SearchType.SCAN) //实际返回的数量为5*index的主分片格式 .setSize(5) //这个游标维持多长时间 .setScroll(TimeValue.timeValueMinutes(8)) .execute().actionGet(); //第一次查询,只返回数量和一个scrollId System.out.println(searchResponse.getHits().getTotalHits()); System.out.println(searchResponse.getHits().hits().length); //第一次运行没有结果 for (SearchHit hit : searchResponse.getHits()) { System.out.println(hit.getSourceAsString()); } System.out.println("------------------------------"); //使用上次的scrollId继续访问 searchResponse = esClient.prepareSearchScroll(searchResponse.getScrollId()) .setScroll(TimeValue.timeValueMinutes(8)) .execute().actionGet(); System.out.println(searchResponse.getHits().getTotalHits()); System.out.println(searchResponse.getHits().hits().length); for (SearchHit hit : searchResponse.getHits()) { System.out.println(hit.getSourceAsString()); } } }
对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问 我的空间
相关推荐
- **查询**:详细说明了Elasticsearch提供的各种查询方式,从简单的匹配查询到复杂的组合查询,帮助开发者更好地理解如何构造高效且准确的查询语句。 - **删除**:介绍了如何删除Elasticsearch中的文档或整个索引。...
- **数据模型**:概述了Elasticsearch 中的数据存储模型,包括文档、索引等核心概念。 - **工具类**:介绍了为简化与Elasticsearch 交互而提供的工具类。 - **增加**:讲解了如何向Elasticsearch 添加新的文档。 ...
1. **SpringBoot 整合 Elasticsearch 游标查询的示例代码(scroll)** 2. **Java 连接 Elasticsearch 集群操作** 3. **docker 启动 Elasticsearch 时内存不足问题及解决方法** 4. **Python 使用 Elasticsearch 实现...
在Python中使用Elasticsearch处理大量数据时,翻页是一个重要的功能。本文将详细介绍三种实现翻页的方法:浅分页(from + size)、深分页(scroll)以及搜索后(search_after)。每种方法都有其适用场景和优缺点,...
ES 深度分页是 Elasticsearch 中的一种分页机制,主要有四种:浅分页、scroll 深分页、search_after 分页和deep pagination。下面将对每种机制进行详细的介绍和分析。 1. 分页概述 ES 中的分页顾名思义,即让我们...
scroll分页通俗来说就是滚屏翻页,设置每页查询数量之后,每次查询会返回一个scroll_id,即当前文档的位置,下次查询再传这个scroll_id给es返回下一页的数据以及一个新的scroll_id,类似于按书页码顺序翻书和游标,...
- 查看 ElasticSearch 如何查看您的数据 - 只需选择索引和类型,您就可以将文档作为 sql 表浏览 - ElasticSearch 或任何其他 API - 只是为了好玩:) 簇 询问 编辑器支持智能感知(真正的智能感知,它知道查询的哪一...
为了解决这个问题,Elasticsearch提供了`scroll` API,它允许开发者在大量数据集上进行持久化的游标遍历。 ### 二、Scroll API原理 `scroll` API的工作原理类似于浏览器的滚动条,它创建了一个持久的搜索上下文,...
SQL语言基础概述高级特性部分将介绍SQL的基本语法、数据定义、数据操纵、查询、伪列、数据类型、函数和操作符、类型转换、索引、视图、全文搜索等。SQL语句命令列表则提供了一系列的SQL关键词和语句。PL/SQL教程部分...
根据给定文件的信息,本文将围绕“如何在WinCC中显示表格数据”这一主题进行深入探讨,主要包括如何利用OLE、DDE以及OPC等技术手段实现WinCC与Excel之间的数据交换,以及通过VBS脚本结合ADO技术实现数据库查询结果在...
例如,可以使用 Elasticsearch 与 MongoDB 集成,创建全文索引,从而提高文本搜索的效率和性能。 4. **模糊查询**: MongoDB 提供正则表达式查询支持,允许使用 `.*` 进行模糊匹配。在命令行中,可以使用 `/陈.*/i...
文档还提到了一些SQL语言的基础概念,例如数据定义、数据操纵、查询、伪列、数据类型、函数和操作符、类型转换、索引、视图、全文搜索以及扩展SQL。这些是使用SQL语言进行数据库设计和操作的基本知识点。 对于SQL...
在一些高级的应用场景中,可以考虑使用缓存(如Redis)来存储部分或全部查询结果,或者使用专门的分页服务(如Elasticsearch)来处理分页逻辑,从而进一步优化性能。 6. **Java框架的分页支持**: Spring Data ...
游标则用于处理查询结果集,特别是当结果集较大时。 综上所述,OCCI迁移指南为开发者提供了详细的指导,帮助他们更好地理解和使用OCCI接口,尤其是在将应用程序从Oracle迁移到KingbaseES的过程中。通过对上述知识点...
`cursor.execute()`方法用于执行SQL语句,`cursor.fetchall()`则用于获取所有查询结果。 使用`psycopg2`库,你可以执行各种数据库操作,如插入、更新、删除数据,以及创建、修改表结构等。此外,`psycopg2`还提供了...
Table函数能够接收查询语句或者游标作为输入,然后返回多行数据,这样的特性使得它在数据处理和分析中具有广泛的应用场景。本文将深入探讨Table函数的使用方法及其优势。 首先,Table函数的一个常见用途是通过游标...