NativeSearchQuery 已弃用,5.0 后的等效项是什么

use*_*290 6 java elasticsearch spring-data-elasticsearch

5.0 以上的支持与 org.springframework.data.elasticsearch.core.query.NativeSearchQuery 等效。

迁移了以下代码片段

    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();
Run Code Online (Sandbox Code Playgroud)

到以下查询,但失败

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();
Run Code Online (Sandbox Code Playgroud)

小智 1

使用本机查询,

    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();

        }
    }
Run Code Online (Sandbox Code Playgroud)