【发布时间】:2018-07-17 20:32:30
【问题描述】:
我正在使用弹性搜索数据库和弹簧数据。 以下是我正在搜索的文档,该搜索结果应返回 sorted 和 pageable 列表。
@Data
@EqualsAndHashCode(exclude = { "id" })
@Document(indexName = "job", type = "job")
public class JobDocument implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String id;
@Field(type = FieldType.String, index = FieldIndex.analyzed, store = true)
private String name;
@Field(type = FieldType.String, index = FieldIndex.analyzed, store = true)
private String desc;
@Field(type = FieldType.Date, store = true)
private LocalDateTime dateTime; // java.Time
}
我正在 desc 字段中搜索文本,并希望按 dateTime 字段对其进行排序。我的搜索服务执行以下操作,
BoolQueryBuilder queryBuilder = boolQuery();
queryBuilder.must(QueryBuilders.queryStringQuery("*" + desc + "*").lenient(true).field("desc"));
NativeSearchQueryBuilder searchQuery = new NativeSearchQueryBuilder();
searchQuery.withPageable(pageable);
searchQuery.withSort(SortBuilders.fieldSort("dateTime")
.order(SortOrder.DESC))
searchQuery.withQuery(queryBuilder);
Page<JobDocument> jobs = jobRepo.search(searchQuery.build());
以下是我的回购,
public interface JobDAO extends ElasticsearchRepository<JobDocument, String>
{}
搜索和分页功能正常,但排序不工作。 我错过了什么吗?
【问题讨论】:
-
为什么要对分析的字段进行排序?
-
那是错字。我已经编辑了问题。
-
@PrashantShilimkar 你找到解决方案了吗?我也有同样的问题
-
没有。还没有。看起来没人知道:D
标签: elasticsearch spring-data-elasticsearch