Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从ES1.7中读取海量数据以索引到ES6.7_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Elastic Stack_Elasticsearch Jest - Fatal编程技术网 elasticsearch,elastic-stack,elasticsearch-jest,Java,elasticsearch,Elastic Stack,Elasticsearch Jest" /> elasticsearch,elastic-stack,elasticsearch-jest,Java,elasticsearch,Elastic Stack,Elasticsearch Jest" />

Java 如何从ES1.7中读取海量数据以索引到ES6.7

Java 如何从ES1.7中读取海量数据以索引到ES6.7,java,elasticsearch,elastic-stack,elasticsearch-jest,Java,elasticsearch,Elastic Stack,Elasticsearch Jest,需要从ES 1.7读取数据,以索引到6.7。 因为没有可用的升级。需要索引2亿条记录中近5 TB的数据。我们正在使用ES_REST_high_level_客户端(6.7.2),使用搜索和滚动方法。但无法使用滚动id进行滚动。尝试的另一种方法是使用起始和批量大小。最初,由于from偏移量增加,读取速度加快,因此读取非常糟糕。最好的方法是什么 第一种方法是使用搜索和滚动 SearchSourceBuilder searchSourceBuilder = new SearchS

需要从ES 1.7读取数据,以索引到6.7。 因为没有可用的升级。需要索引2亿条记录中近5 TB的数据。我们正在使用ES_REST_high_level_客户端(6.7.2),使用搜索和滚动方法。但无法使用滚动id进行滚动。尝试的另一种方法是使用起始和批量大小。最初,由于from偏移量增加,读取速度加快,因此读取非常糟糕。最好的方法是什么

第一种方法是使用搜索和滚动

            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.size(10);
            searchRequest.source(searchSourceBuilder);
            searchRequest.scroll(TimeValue.timeValueMinutes(2));
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
            String scrollId = searchResponse.getScrollId();

    while (run) {
                SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
                scrollRequest.scroll(TimeValue.timeValueSeconds(60));
                SearchResponse searchScrollResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
                scrollId = searchScrollResponse.getScrollId();
                hits = searchScrollResponse.getHits();

                if (hits.getHits().length == 0) {
                    run = false;
                }
            }
例外情况 线程“main”中的异常ElasticsearchStatusException[Elasticsearch异常[type=Exception,reason=ElasticsearchIllegalArgumentException[未能解码scrollId];嵌套:IOException[数组位置0中的错误Base64输入字符十进制123];]] 在org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177) 位于org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2050) 位于org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2026) :

第二种方法:

int offset = 0;
        boolean run = true;
        while (run) {
            SearchRequest searchRequest = new SearchRequest("indexname");
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.from(offset);
            searchSourceBuilder.size(500);
            searchRequest.source(searchSourceBuilder);
            long start = System.currentTimeMillis();
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
            long end = System.currentTimeMillis();

            SearchHits hits = searchResponse.getHits();
            System.out.println(" Total hits : " + hits.totalHits + " time : " + (end - start));
            offset += 500;
            if(hits.getHits().length == 0) {
                run = false;
            }
        }

任何其他读取数据的方法。

通常最好的解决方案是远程重新索引:

我不确定REST客户端是否仍然与1.x兼容,而远程reindex应该支持它


深度分页非常昂贵,这就是应该避免的原因-您可以在示例中看到原因。

通常最好的解决方案是远程重新索引:

我不确定REST客户端是否仍然与1.x兼容,而远程reindex应该支持它


深度分页非常昂贵,这就是为什么应该避免的原因-您可以在示例中看到原因。

1)以逻辑方式对数据进行切片(例如按日期),然后2)使用带有elasticsearch输入和elasticsearch输出的logstash如何?读取成本仍然很高。。指数增长得很大。。现在分割索引有点困难。。由于我们使用的是1.7 ES版本。我关于切片的建议与该版本无关,您将执行多个并行查询,每个查询都有各自的日期范围。1)逻辑切片数据(例如按日期),然后2)使用日志存储(带有elasticsearch输入和elasticsearch输出)如何?读取成本仍然很高。。指数增长得很大。。现在分割索引有点困难。。由于我们使用的是1.7 ES版本。我关于切片的建议与版本无关,您将执行多个并行查询,每个查询都有自己的日期范围。它不工作,因为版本是旧索引:),我们希望在文档中进行筛选和更新。从1.7到6.x的远程重新索引应该仍然有效。这支持过滤,您可以使用脚本更新文档。将类型更改为_doc将是我现在要清理的事情,以使升级到7个simplerIts不起作用,因为版本是旧索引:),并且我们希望在doc.Remote reindex中进行筛选和更新,从1.7到6.x应该仍然有效。这支持过滤,您可以使用脚本更新文档。将类型更改为_doc将是我现在要做的事情,以简化升级到7的过程