Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据弹性搜索排序_Java_Spring_<img Src="//i.stack.imgur.com/A3TTx.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">spring Data Elasticsearch - Fatal编程技术网 spring-data-elasticsearch,Java,Spring,spring Data Elasticsearch" /> spring-data-elasticsearch,Java,Spring,spring Data Elasticsearch" />

Java Spring数据弹性搜索排序

Java Spring数据弹性搜索排序,java,spring,spring-data-elasticsearch,Java,Spring,spring Data Elasticsearch,我试图学习SpringDataElasticSearch,并创建了一个示例项目。现在,我正在努力熟悉分类的机制 简单地说,我有一个Person类,它有firstName和lastName字段。我正在尝试按lastNameField排序 这是我的个人课: @Document(indexName = "entities", type = "person", shards=1, replicas=0) public class Person { @Id private String

我试图学习SpringDataElasticSearch,并创建了一个示例项目。现在,我正在努力熟悉分类的机制

简单地说,我有一个Person类,它有firstName和lastName字段。我正在尝试按lastNameField排序

这是我的个人课:

@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));
}
@覆盖
公共页面getPeople(int pageNumber、int pageSize、方向、字符串…sortFields){
return personRepository.findAll(新页面请求(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();
}
intpagesize=1;
int currentPageNumber=-1;
布尔值=真;
while(更多页){
PageResults=personDataHandler.getPeople(currentPageNumber+1,pageSize,Direction.DESC,“firstName”);
List people=results.getContent();
如果(!CollectionUtils.isEmpty(人)){
for(个人当前个人:个人){
System.out.println(“[firstName:+currentPerson.getFirstName()+”,lastName:+currentPerson.getLastName()+”);
}
}
currentPageNumber++;
morePages=results.hasNext();
}

页面大小是否为1是个问题?

除非我遗漏了什么,否则您的代码似乎是正确的。你到底被困在哪里了?搜索正在运行,但结果没有被分类。firstName很可能不止一个单词?此外,您还可以共享该类型的映射。此外,一定要检查是否使用原始ES查询对其进行排序。除非我遗漏了什么,否则您的代码似乎是正确的。你到底被困在哪里了?搜索正在运行,但结果没有被分类。firstName很可能不止一个单词?此外,您还可以共享该类型的映射。此外,请检查是否使用原始ES查询对其进行排序。