`
donlianli
  • 浏览: 340907 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Elasticsearch...
浏览量:218829
社区版块
存档分类
最新评论

elasticsearch游标查询所有数据

阅读更多

在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。
更多我之前的文章,可以访问 我的空间
分享到:
评论
1 楼 dizh 2014-08-11  
感觉es应该有复制功能吧?

相关推荐

    Elasticsearch Java教程.pdf

    - **查询**:详细说明了Elasticsearch提供的各种查询方式,从简单的匹配查询到复杂的组合查询,帮助开发者更好地理解如何构造高效且准确的查询语句。 - **删除**:介绍了如何删除Elasticsearch中的文档或整个索引。...

    Elasticsearch1.x Java教程

    - **数据模型**:概述了Elasticsearch 中的数据存储模型,包括文档、索引等核心概念。 - **工具类**:介绍了为简化与Elasticsearch 交互而提供的工具类。 - **增加**:讲解了如何向Elasticsearch 添加新的文档。 ...

    分布式全文检索引擎ElasticSearch原理及使用实例

    1. **SpringBoot 整合 Elasticsearch 游标查询的示例代码(scroll)** 2. **Java 连接 Elasticsearch 集群操作** 3. **docker 启动 Elasticsearch 时内存不足问题及解决方法** 4. **Python 使用 Elasticsearch 实现...

    python 使用elasticsearch 实现翻页的三种方式

    在Python中使用Elasticsearch处理大量数据时,翻页是一个重要的功能。本文将详细介绍三种实现翻页的方法:浅分页(from + size)、深分页(scroll)以及搜索后(search_after)。每种方法都有其适用场景和优缺点,...

    ES深度分页.docx

    ES 深度分页是 Elasticsearch 中的一种分页机制,主要有四种:浅分页、scroll 深分页、search_after 分页和deep pagination。下面将对每种机制进行详细的介绍和分析。 1. 分页概述 ES 中的分页顾名思义,即让我们...

    java版商城源码-elasticsearch-visual::magnifying_glass_tilted_left:使用elasticsearch的javaapi进行from&size和scro

    scroll分页通俗来说就是滚屏翻页,设置每页查询数量之后,每次查询会返回一个scroll_id,即当前文档的位置,下次查询再传这个scroll_id给es返回下一页的数据以及一个新的scroll_id,类似于按书页码顺序翻书和游标,...

    elasticops:用 C# 和 F# 编写的 ElasticSearch 管理工作室

    - 查看 ElasticSearch 如何查看您的数据 - 只需选择索引和类型,您就可以将文档作为 sql 表浏览 - ElasticSearch 或任何其他 API - 只是为了好玩:) 簇 询问 编辑器支持智能感知(真正的智能感知,它知道查询的哪一...

    scrollDemo

    为了解决这个问题,Elasticsearch提供了`scroll` API,它允许开发者在大量数据集上进行持久化的游标遍历。 ### 二、Scroll API原理 `scroll` API的工作原理类似于浏览器的滚动条,它创建了一个持久的搜索上下文,...

    人大金仓SQL和PLSQL速查手册.pdf

    SQL语言基础概述高级特性部分将介绍SQL的基本语法、数据定义、数据操纵、查询、伪列、数据类型、函数和操作符、类型转换、索引、视图、全文搜索等。SQL语句命令列表则提供了一系列的SQL关键词和语句。PL/SQL教程部分...

    wincc显示表格数据

    根据给定文件的信息,本文将围绕“如何在WinCC中显示表格数据”这一主题进行深入探讨,主要包括如何利用OLE、DDE以及OPC等技术手段实现WinCC与Excel之间的数据交换,以及通过VBS脚本结合ADO技术实现数据库查询结果在...

    mongodb学习记录

    例如,可以使用 Elasticsearch 与 MongoDB 集成,创建全文索引,从而提高文本搜索的效率和性能。 4. **模糊查询**: MongoDB 提供正则表达式查询支持,允许使用 `.*` 进行模糊匹配。在命令行中,可以使用 `/陈.*/i...

    SQL和PLSQL速查手册.pdf

    文档还提到了一些SQL语言的基础概念,例如数据定义、数据操纵、查询、伪列、数据类型、函数和操作符、类型转换、索引、视图、全文搜索以及扩展SQL。这些是使用SQL语言进行数据库设计和操作的基本知识点。 对于SQL...

    fx-991ES中文说明书

    - **标题**:"fx-991ES中文说明书"表明这是一份针对Casio fx-991ES计算器的中文版使用指南,适用于需要中文指导的所有用户。 - **描述**:"fx-991ES中文说明书是fx-991ES中文说明书而已"虽然描述略显重复,但其意在...

    java代替sql limit函数

    在一些高级的应用场景中,可以考虑使用缓存(如Redis)来存储部分或全部查询结果,或者使用专门的分页服务(如Elasticsearch)来处理分页逻辑,从而进一步优化性能。 6. **Java框架的分页支持**: Spring Data ...

    python 链接kingbase库

    `cursor.execute()`方法用于执行SQL语句,`cursor.fetchall()`则用于获取所有查询结果。 使用`psycopg2`库,你可以执行各种数据库操作,如插入、更新、删除数据,以及创建、修改表结构等。此外,`psycopg2`还提供了...

    [应用开发及迁移]OCCI迁移指南.pdf

    游标则用于处理查询结果集,特别是当结果集较大时。 综上所述,OCCI迁移指南为开发者提供了详细的指导,帮助他们更好地理解和使用OCCI接口,尤其是在将应用程序从Oracle迁移到KingbaseES的过程中。通过对上述知识点...

    Oracle 中 table 函数的应用浅析

    Table函数能够接收查询语句或者游标作为输入,然后返回多行数据,这样的特性使得它在数据处理和分析中具有广泛的应用场景。本文将深入探讨Table函数的使用方法及其优势。 首先,Table函数的一个常见用途是通过游标...

Global site tag (gtag.js) - Google Analytics