org.springframework.data.elasticsearch.core.query.NativeSearchQuery 等同于 5.0 之后的支持。
从
迁移了以下片段 NativeSearchQuery query = new NativeSearchQueryBuilder()
.withSourceFilter(new FetchSourceFilterBuilder().withIncludes().build())
.withQuery(QueryBuilders.termQuery(Configuration.CONFIGURATION_TYPE, field))
.withSorts(new FieldSortBuilder(Configuration.NAME).order(SortOrder.ASC)).withPageable(pageable)
.build();
以下查询,但失败了
import org.springframework.data.elasticsearch.client.elc.NativeQuery;
import org.springframework.data.elasticsearch.client.elc.NativeQueryBuilder;
NativeQuery query = new NativeQueryBuilder()
.withSourceFilter(new FetchSourceFilterBuilder().withIncludes().build())
.withQuery(QueryBuilders.termQuery(Configuration.CONFIGURATION_TYPE, field))
.withSorts(new FieldSortBuilder(Configuration.NAME).order(SortOrder.ASC)).withPageable(pageable)
.build();
使用本机查询,
package com.lazyaudio;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.client.elc.NativeQuery;
import org.springframework.data.elasticsearch.client.elc.QueryBuilders;
import org.springframework.data.elasticsearch.core.query.FetchSourceFilterBuilder;
public class Test {
public static void main(String[] args) {
Pageable pageable = null;
NativeQuery query = NativeQuery.builder()
.withSourceFilter(new FetchSourceFilterBuilder().withIncludes().build())
.withQuery(QueryBuilders.termQueryAsQuery("fieldName", ""))
.withSort(Sort.by(Sort.Direction.DESC, "fieldName"))
.withPageable(pageable)
.build();
}
}
Spring Data Elasticsearch 5.x 及更高版本的 NativeSearchQuery 的等价物是 SearchQuery。您可以使用 NativeSearchQueryBuilder 以与之前代码类似的方式构建 SearchQuery 对象。
注意在最新版本的Spring Data Elasticsearch中withSorts()已经被withSort()取代。此外,请确保为 SearchQuery 和 NativeSearchQueryBuilder 导入正确的类。
举个例子:
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.SearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
...
SearchQuery query = new NativeSearchQueryBuilder()
.withSourceFilter(new FetchSourceFilterBuilder().withIncludes().build())
.withQuery(QueryBuilders.termQuery(Configuration.CONFIGURATION_TYPE, field))
.withSort(new FieldSortBuilder(Configuration.NAME).order(SortOrder.ASC))
.withPageable(pageable)
.build();