我正在尝试学习spring数据弹性搜索,并创建了一个示例项目 . 现在,我正在努力熟悉排序的机制 .

简单地说,我有一个Person类,它有一个firstName和lastName字段 . 我试图对lastNameField进行排序 .

这是我的Person类:

@Document(indexName = "entities", type = "person", shards=1, replicas=0)
public class Person {

    @Id
    private String id;
    @Field(type=FieldType.String, index=FieldIndex.not_analyzed)
    private String firstName;
    @Field(type=FieldType.String, index=FieldIndex.not_analyzed)
    private String lastName;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

这是我的DAO逻辑:

@Override
public Page<Person> getPeople(int pageNumber, int pageSize, Direction direction, String...sortFields) {
    return personRepository.findAll(new PageRequest(pageNumber, pageSize, direction, sortFields));
}

personRepository是一个扩展PagingAndSortingRepository的空接口

和实际的电话:

int pageSize = 1;
int currentPageNumber = -1;
boolean morePages = true;
while(morePages){
    Page<Person> results = personDataHandler.getPeople(currentPageNumber+1, pageSize, Direction.DESC, "firstName");
    List<Person> people = results.getContent();
    if(!CollectionUtils.isEmpty(people)){
        for(Person currentPerson: people){
            System.out.println("[firstName: "+currentPerson.getFirstName()+", lastName: "+currentPerson.getLastName()+"]");
        }
    }
    currentPageNumber++;
    morePages = results.hasNext();
}

页面大小为1可能是问题吗?