使用 elasticsearchTemplate 从 ElasticSearch 获取所有文档

Posted

技术标签:

【中文标题】使用 elasticsearchTemplate 从 ElasticSearch 获取所有文档【英文标题】:Get all documents from ElasticSearch using elasticsearchTemplate 【发布时间】:2016-02-24 12:59:07 【问题描述】:

我的 elasticsearch 上有很多文档。我正在使用 elasticsearchTemplate.queryForList(SearchQuery, class) 根据我的查询获取文档。此查询始终返回 10 个文档。 elasticsearch 是否提供任何 api 来返回所有匹配查询的文档?

【问题讨论】:

【参考方案1】:

您需要在您的searchQuery 中添加Page Request

NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withPageable(new PageRequest(0, repository.count() as int))

SearchQuery query = builder.build()

Repository.count() 将给出索引中的文档数。

希望这会有所帮助。

【讨论】:

这里的 repository.count() 是什么? 将为您提供该存储库索引中的文档数 答案中写的代码是使用spring data弹性搜索我们在使用spring data时为索引创建存储库 对于像我这样在 2018 年遇到此问题的人,new PageRequest(0, repository.count() 已弃用,您可以改用 PageRequest.of(0, repository.count() @Verv 您能否详细说明您的解决方案。 ElasticSearchTemplate 不接受 pageRequest 作为参数。

以上是关于使用 elasticsearchTemplate 从 ElasticSearch 获取所有文档的主要内容,如果未能解决你的问题,请参考以下文章

从 Spring-Boot 测试中排除 elasticsearchTemplate

springBoot集成es查询,使用ElasticsearchTemplate执行滚动查询

elasticsearchTemplate操作es

Spring Boot 自动配置覆盖自定义(elasticsearchTemplate)配置

如何使用Spring Data ElasticsearchTemplate连接到Amazon Elasticsearch Service?

elasticsearchTemplate的聚合查询