Java Spring数据弹性搜索排序
我试图学习SpringDataElasticSearch,并创建了一个示例项目。现在,我正在努力熟悉分类的机制 简单地说,我有一个Person类,它有firstName和lastName字段。我正在尝试按lastNameField排序 这是我的个人课: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
@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查询对其进行排序。