diff --git a/be/src/util/es_query_builder.cpp b/be/src/util/es_query_builder.cpp index 6909e00c24dfa1..3f3ba8ebe5b00b 100644 --- a/be/src/util/es_query_builder.cpp +++ b/be/src/util/es_query_builder.cpp @@ -243,7 +243,7 @@ BooleanQueryBuilder::BooleanQueryBuilder(const std::vector& predi } case TExprNodeType::FUNCTION_CALL: { ExtFunction* function_predicate = (ExtFunction *)predicate; - if ("es_query" == function_predicate->func_name ) { + if ("esquery" == function_predicate->func_name ) { ESQueryBuilder* es_query = new ESQueryBuilder(function_predicate); _should_clauses.push_back(es_query); }; @@ -300,8 +300,7 @@ void BooleanQueryBuilder::must_not(QueryBuilder* filter) { _must_not_clauses.push_back(filter); } -rapidjson::Value BooleanQueryBuilder::to_query(const std::vector& predicates) { - rapidjson::Document root; +rapidjson::Value BooleanQueryBuilder::to_query(const std::vector& predicates, rapidjson::Document& root) { if (predicates.size() == 0) { MatchAllQueryBuilder match_all_query; return match_all_query.to_json(root) diff --git a/be/src/util/es_query_builder.h b/be/src/util/es_query_builder.h index 53af63fde3d08b..f50848d0bb3e82 100644 --- a/be/src/util/es_query_builder.h +++ b/be/src/util/es_query_builder.h @@ -105,7 +105,7 @@ class BooleanQueryBuilder : public QueryBuilder { void must(QueryBuilder* filter); void must_not(QueryBuilder* filter); // class method for transfer predicate to es query value, invoker should enclose this value with `query` - static rapidjson::Value to_query(const std::vector& predicates); + static rapidjson::Value to_query(const std::vector& predicates, rapidjson::Document& root); private: std::vector _must_clauses; diff --git a/be/src/util/es_scroll_query.cpp b/be/src/util/es_scroll_query.cpp index 7dbbdb56daafcf..3f268c532fbba4 100644 --- a/be/src/util/es_scroll_query.cpp +++ b/be/src/util/es_scroll_query.cpp @@ -67,7 +67,8 @@ std::string ESScrollQueryBuilder::build(const std::map rapidjson::Document::AllocatorType &allocator = es_query_dsl.GetAllocator(); es_query_dsl.SetObject(); // generate the filter caluse - rapidjson::Value query_node = BooleanQueryBuilder::to_query(predicates); + rapidjson::Document scratch_document; + rapidjson::Value query_node = BooleanQueryBuilder::to_query(predicates, scratch_document); // note: add `query` for this value.... es_query_dsl.AddMember("query", query_node, allocator); // just filter the selected fields for reducing the network cost