我在elasticsearch中有17364个文档的索引。
$curl http://localhost:9200/performance/_count
{"count":17364,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0}}
Spring数据存储库,
public interface TestRepository extends ElasticsearchRepository<Transaction, String> {
}
逐页获取所有文档并打印:
public void testReport() {
int page = 0, pageSize = 1000;
Pageable of = PageRequest.of(page, pageSize);
Page<Transaction> all = testRepository.findAll(of);
int numberOfPages = all.getTotalPages();
log.info("All pages: {}, {}", numberOfPages, all.getTotalElements());
do {
log.info("Current page: {}, {}", of.getPageNumber(), of.getPageSize());
for (Transaction txn : all) {
log.info(mapper.writeValueAsString(txn));
}
} while ((of = of.next()) != null && (transactionRepository.findAll(of)) != null);
}
这段代码只返回10000个文档,尽管索引中有17364个文档。你能帮我找出为什么会这样吗。
我看到两种选择:
答:由于您只有17364个文档,因此可以增加索引。max_result_window
将索引设置为(例如)20000,以便可以分页到最后:
PUT performance/_settings
{
"index.max_result_window": 20000
}
B.如果你有更大的索引和/或增加索引。max_result_window
出于任何原因,限制都不是一个选项,那么您需要利用Scroll API。Spring Data ES支持两种方法。
第一种方法涉及利用ElasticsearchTemplate。searchForStream()方法,该方法在内部使用Scroll API
SearchHitsIterator<Transaction> stream = elasticsearchTemplate.searchForStream(searchQuery, Transaction.class, "performance");
第二种方法更低级。您需要使用返回流的方法修改存储库定义
:
public interface TestRepository extends ElasticsearchRepository<Transaction, String> {
Stream<Transaction> findScrollAll();
}
然后使用Elasticsearch chTemplate实现该方法。search chScrollStart()
和Elasticsearch chTemplate. search chScroll继续()
补充:
第三种选择:
定义一个方法
Stream<Searchhit<Transaction>> searchBy()
在您的Testrepository
中。或者只使用返回类型流
问题内容: 我正在将Jenkins管道插件与Jenkinsfile一起使用。 在一个名为vms.git的存储库中,我有Jenkinsfile及其构建的应用程序。 我还有一个名为deploy.git的存储库,其中包含我想用于在vms.git中部署应用程序的脚本。 目前,我的Jenkinsfile看起来像这样 并且我在作业配置中定义了vms.git存储库。 因此,我想做的是检出两个存储库,然后使用vm
我正在使用Jenkins管道插件和Jenkins文件。 在一个名为vms的存储库中。git,我有Jenkinsfile和它构建的应用程序。 我有另一个名为deploy的存储库。git,其中包含我想用于在VM中部署应用程序的脚本。吉特。 目前我的Jenkinsfile就是这样的 我正在作业配置中定义vms.git存储库。 所以我想做的是检查这两个存储库,然后在vms中使用Jenkinsfile。gi
我查阅了许多存储库设计模式教程,如 https://asperbrothers.com/blog/implement-repository-pattern-in-laravel/ https://www.larashout.com/how-to-use-repository-pattern-in-laravel https://laravelarticle.com/repository-desig
http://maven.apache.org/maven-v4_0_0.xsd“> 正如u提到的,我在mvnrepository.com/artifact/org.databene/benerator-maven-plugin/…找到了新的存储库,试图编辑POM,但得到的错误为 [警告]org.databene:benerator-maven-plugin:jar:jar的POM丢失,没有可用的
我在数据库里有一些文本。我用法语和英语。法语有口音,还有一些特殊的字符,如。我使用Mamp、MySQL和PHP。 我有latin1_swedish-ci排序规则(默认)。我尝试了,结果是一样的。如果我在html页面中使用,我会在标题中使用: