gpt4 book ai didi

java - 如何使用java在elasticsearch SearchQuery中指定 "start"文档? (跳过文件数量)

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:30 25 4
gpt4 key购买 nike

我有一个像这样构建的 SearchQuery:

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.withQuery(queryString("A")) .withSort(SortBuilders.fieldSort("fruitId").order(SortOrder.DESC))
.withIndices("fruit").withTypes("fruit");

我希望能够在搜索结果上指定某种“开始”和“大小”,以便我可以:

1) 根据“大小”返回结果数。

2) 基于“Start”整数返回文档。例如,如果我的文档其中 A,B,C,D,E...Z 如果我的“start”设置为 5 并且“size”设置为 5,则它将返回“F,G,H,I,J”。

最佳答案

由于您使用的是 Spring Data Elasticsearch,因此需要调用 withPageable()方法:

SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withPageable(new PageRequest(1, 5)) <--- add this
.withQuery(matchAllQuery())
.withQuery(queryString("A"))
.withSort(SortBuilders.fieldSort("fruitId").order(SortOrder.DESC))
.withIndices("fruit").withTypes("fruit");

PageRequest 构造函数采用两个参数:page(从 0 开始)和 size。在这里,我们请求尺寸为 5 的第二页(即第 1 页)。这将返回您所需要的内容。

PageRequest class的官方文档.

但是请注意,您的查询仍然存在问题,即您调用了 withQuery() 两次,因此第二次调用将覆盖第一个调用。在这种情况下,可能没问题,因为第一个调用是 matchAll (基本上,返回所有内容),而第二个调用则更具体。但如果您想组合两个不同的查询,则需要以不同的方式进行并使用 boolQuery

关于java - 如何使用java在elasticsearch SearchQuery中指定 "start"文档? (跳过文件数量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com