elasticsearch 缺少必需的属性“生成器”,< variant kind>

sqxo8psd  于 2023-05-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(581)
public void getMaxMinPrice(String category, String subcategory) {

        var nativeQueryBuilder = new NativeQueryBuilder();

        nativeQueryBuilder.withQuery(queryBuilder ->
                queryBuilder.bool(boolBuilder ->
                        boolBuilder.must(mustBuilder -> {

                            if (category != null) {
                                mustBuilder.term(termBuilder -> termBuilder.field("category.keyword").value(category));
                            }

                            if (subcategory != null) {
                                mustBuilder.term(termBuilder -> termBuilder.field("subcategory.keyword").value(subcategory));
                            }

                            return mustBuilder;
                        })));

        nativeQueryBuilder.withAggregation("max_price", Aggregation.of(aggBuilder ->
                aggBuilder.max(maxBuilder -> maxBuilder.field("price"))));

        nativeQueryBuilder.withAggregation("min_price", Aggregation.of(aggBuilder ->
                aggBuilder.min(minBuilder -> minBuilder.field("price"))));
    }

该异常将在nativeQueryBuilder.withQuery方法中的某个位置引发。使用ElasticSearch模板。

2izufjch

2izufjch1#

这对我来说是不可复制的。我把你的代码放在一个小的scratch程序中,并添加了一个变量(query),以在以下位置设置断点:

import co.elastic.clients.elasticsearch._types.aggregations.Aggregation;
import org.springframework.data.elasticsearch.client.elc.NativeQueryBuilder;

class Scratch {
    public static void main(String[] args) {
        var scratch = new Scratch();
        scratch.getMaxMinPrice("category", "subcategory");
    }

    public void getMaxMinPrice(String category, String subcategory) {

        var nativeQueryBuilder = new NativeQueryBuilder();

        nativeQueryBuilder.withQuery(queryBuilder -> queryBuilder.bool(boolBuilder -> boolBuilder.must(mustBuilder -> {

            if (category != null) {
                mustBuilder.term(termBuilder -> termBuilder.field("category.keyword").value(category));
            }

            if (subcategory != null) {
                mustBuilder.term(termBuilder -> termBuilder.field("subcategory.keyword").value(subcategory));
            }

            return mustBuilder;
        })));

        nativeQueryBuilder.withAggregation("max_price",
                Aggregation.of(aggBuilder -> aggBuilder.max(maxBuilder -> maxBuilder.field("price"))));

        nativeQueryBuilder.withAggregation("min_price",
                Aggregation.of(aggBuilder -> aggBuilder.min(minBuilder -> minBuilder.field("price"))));

        var query = nativeQueryBuilder.build();
        query.getQuery();

    }
}

停在query.getQuery行并检查query变量,一切都设置正确,没有错误:

所以你看到的错误一定是来自其他地方。我使用的是当前发布的5.0版本。
在异常创建时放置调试器断点,并查看此错误的来源。

相关问题