gpt4 book ai didi

spring-data-elasticsearch - spring data elasticsearch如何使用offset和limit来查询

转载 作者:行者123 更新时间:2023-12-04 12:39:16 24 4
gpt4 key购买 nike

spring data elasticsearch如何使用offset和limit来查询。我想使用偏移量和限制参数来查询页面。但我找不到方法支持。例如:

    queryBuild.withPageable(PageRequest.of(pageIndex, pageSize));
Page<Content> content = elasticsearchOperations.queryForPage(queryBuild.build(),Content.class);

没关系

但是我找不到带有偏移量和限制的方法
    queryBuild.withPageable(PageRequest.of(offset, limit));

最佳答案

我有同样的问题,所以我实现了以下类

import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

public class OffsetLimitPageable implements Pageable {

private int offset;
private int page;
private int size;
private Sort sort = Sort.unsorted();

protected OffsetLimitPageable(int offset, int page, int size) {
if (offset < 0) {
throw new IllegalArgumentException("Offset must not be less than zero!");
}

if (page < 0) {
throw new IllegalArgumentException("Page index must not be less than zero!");
}

if (size < 1) {
throw new IllegalArgumentException("Page size must not be less than one!");
}

this.offset = offset;
this.page = page;
this.size = size;
}

public static OffsetLimitPageable of(int offset, int page, int size) {
return new OffsetLimitPageable(offset, page, size);
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#getPageNumber()
*/
@Override
public int getPageNumber() {
return page;
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#getPageSize()
*/
@Override
public int getPageSize() {
return size;
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#getOffset()
*/
@Override
public long getOffset() {
return offset + page * size;
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#getSort()
*/
@Override
public Sort getSort() {
return sort;
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#next()
*/
public Pageable next() {
return of(offset, page + 1, size);
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#previousOrFirst()
*/
public Pageable previousOrFirst() {
return hasPrevious() ? of(offset, page - 1, size) : first();
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#first()
*/
public Pageable first() {
return of(offset, 0, size);
}

/*
* (non-Javadoc)
* @see org.springframework.data.domain.Pageable#hasPrevious()
*/
public boolean hasPrevious() {
return page > 0;
}
}
而且,像这样使用
queryBuild.withPageable(OffsetLimitPageable.of(offset, page, limit));

关于spring-data-elasticsearch - spring data elasticsearch如何使用offset和limit来查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009033/

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