NativeSearchQuery 已弃用 5.0 之后的等价物是什么

问题描述 投票:0回答:2

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();
java elasticsearch spring-data-elasticsearch
2个回答
0
投票

使用本机查询,

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

        }
    }

0
投票

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();
© www.soinside.com 2019 - 2024. All rights reserved.