NativeSearchQuery已经被弃用,5.0以后的版本中有什么等效的替代品?

5

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();
2个回答

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

        }
    }

1
我遇到了同样的问题,谢谢。就我而言,我也想通过聚合在“品牌”上执行groupBy。
我试图用NativeQuery来构建的JSON查询如下:
{
     "size": 0,
     "aggs": {
         "distinct_brand": {
             "terms": {
                 "field": "brand",
                 "size": 10000,
                 "order": {
                 "_key": "asc"
         }
       }
     }
   }
}

我的代码目前是这样的:
 Query query = NativeQuery.builder()
         .withQuery(q -> q
                 .matchAll(my -> my))
         .withSort(Sort.by(Sort.Direction.ASC, "brand")).build();

如何添加聚合功能?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接