Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
1894875
Support filter script push down for calcite
qianheng-aws May 30, 2025
13acaf5
Fix UT
qianheng-aws Jun 23, 2025
b37dc92
Change CompoundedScriptEngine name
qianheng-aws Jun 24, 2025
1abf8aa
Merge remote-tracking branch 'refs/remotes/origin/main' into ScriptPu…
qianheng-aws Jun 24, 2025
bc6ecac
Remove duplicated code after merging main
qianheng-aws Jun 24, 2025
cb3a2fe
Create RelJsonSerializer to serialize RexNode instead of unsafe code …
songkant-aws Jun 26, 2025
700fc29
Fix some IT
songkant-aws Jul 9, 2025
fc77e5e
Add validation logic before script serialization
songkant-aws Jul 10, 2025
aba4fed
Merge branch 'main' into rexnode-json-serialization
songkant-aws Jul 10, 2025
2cf247d
Resolve compilation issue after merge
songkant-aws Jul 10, 2025
3049c0c
Comply with relevance query pushdown
songkant-aws Jul 10, 2025
85f8df0
Add cost computing for script pushdown to balance performance
songkant-aws Jul 11, 2025
18ab9bf
Merge branch 'main' into rexnode-json-serialization
songkant-aws Jul 11, 2025
5b18cc4
Correct test case after merge
songkant-aws Jul 11, 2025
e522bc0
Add V2Expression vs RexNode serde benchmark
songkant-aws Jul 15, 2025
1da69d1
Fix spotless check
songkant-aws Jul 15, 2025
ee67876
Address comments
songkant-aws Jul 16, 2025
c18006a
Fix IT after change
songkant-aws Jul 16, 2025
ffd26a7
Encode langType into script JSON blob
songkant-aws Jul 17, 2025
3ff2f50
Merge branch 'main' into rexnode-json-serialization
songkant-aws Jul 17, 2025
2fee6ee
Merge branch 'main' into rexnode-json-serialization
songkant-aws Jul 17, 2025
08cd417
Fix issue after merge
songkant-aws Jul 17, 2025
fde5cf0
Merge branch 'main' into rexnode-json-serialization
songkant-aws Jul 18, 2025
d2a95ea
Merge branch 'main' into rexnode-json-serialization
songkant-aws Jul 21, 2025
1dd6752
Consolidate with partial pushdown logic after merge
songkant-aws Jul 21, 2025
573552b
Fix UT
songkant-aws Jul 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@
import static org.opensearch.sql.calcite.utils.UserDefinedFunctionUtils.adaptExprMethodToUDF;
import static org.opensearch.sql.calcite.utils.UserDefinedFunctionUtils.adaptExprMethodWithPropertiesToUDF;

import com.google.common.base.Suppliers;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.function.Supplier;
import org.apache.calcite.adapter.enumerable.NullPolicy;
import org.apache.calcite.adapter.enumerable.RexImpTable;
import org.apache.calcite.adapter.enumerable.RexImpTable.RexCallImplementor;
Expand Down Expand Up @@ -80,6 +82,9 @@
/** Defines functions and operators that are implemented only by PPL */
public class PPLBuiltinOperators extends ReflectiveSqlOperatorTable {

private static final Supplier<PPLBuiltinOperators> INSTANCE =
Suppliers.memoize(() -> (PPLBuiltinOperators) new PPLBuiltinOperators().init());

// Json Functions
public static final SqlOperator JSON = new JsonFunctionImpl().toUDF("JSON");
public static final SqlOperator JSON_ARRAY_LENGTH =
Expand Down Expand Up @@ -327,6 +332,15 @@ public class PPLBuiltinOperators extends ReflectiveSqlOperatorTable {
public static final SqlOperator TRANSFORM = new TransformFunctionImpl().toUDF("transform");
public static final SqlOperator REDUCE = new ReduceFunctionImpl().toUDF("reduce");

/**
* Returns the PPL specific operator table, creating it if necessary.
*
* @return PPLBuiltinOperators operator table
*/
public static PPLBuiltinOperators instance() {
return INSTANCE.get();
}

/**
* Invoking an implementor registered in {@link RexImpTable}, need to use reflection since they're
* all private Use method directly in {@link BuiltInMethod} if possible, most operators'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import java.io.IOException;
import org.junit.Ignore;
import org.junit.jupiter.api.Test;
import org.opensearch.sql.ppl.ExplainIT;

public class CalciteExplainIT extends ExplainIT {
Expand All @@ -20,4 +21,16 @@ public void init() throws Exception {
@Override
@Ignore("test only in v2")
public void testExplainModeUnsupportedInV2() throws IOException {}

// Only for Calcite, as v2 gets unstable serialized string for function
@Test
public void testFilterScriptPushDownExplain() throws Exception {
super.testFilterScriptPushDownExplain();
}

// Only for Calcite, as v2 gets unstable serialized string for function
@Test
public void testFilterFunctionScriptPushDownExplain() throws Exception {
super.testFilterFunctionScriptPushDownExplain();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import java.io.IOException;
import org.json.JSONObject;
import org.junit.Ignore;
import org.junit.Test;
import org.opensearch.sql.ppl.PPLIntegTestCase;

Expand Down Expand Up @@ -139,6 +140,9 @@ public void testQ3() throws IOException {
rows(4423, 3055.9365, "1995-02-17 00:00:00", 0));
}

// TODO: Aggregation push down has a hard-coded limit of 1000 buckets for output, so this query
// will not return the correct results with aggregation push down and it's unstable
@Ignore
@Test
public void testQ4() throws IOException {
String ppl = sanitize(loadFromFile("tpch/queries/q4.ppl"));
Expand All @@ -147,11 +151,11 @@ public void testQ4() throws IOException {
actual, schema("o_orderpriority", "string"), schema("order_count", "bigint"));
verifyDataRows(
actual,
rows("1-URGENT", 9),
rows("1-URGENT", 7),
rows("2-HIGH", 7),
rows("3-MEDIUM", 9),
rows("4-NOT SPECIFIED", 8),
rows("5-LOW", 12));
rows("3-MEDIUM", 4),
rows("4-NOT SPECIFIED", 7),
rows("5-LOW", 10));
}

@Test
Expand Down
31 changes: 31 additions & 0 deletions integ-test/src/test/java/org/opensearch/sql/ppl/ExplainIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import static org.opensearch.sql.util.MatcherUtils.assertJsonEqualsIgnoreId;

import java.io.IOException;
import org.junit.Ignore;
import org.junit.jupiter.api.Test;
import org.opensearch.client.ResponseException;
import org.opensearch.sql.legacy.TestUtils;
Expand Down Expand Up @@ -302,4 +303,34 @@ public void testPatternsBrainMethodWithAggPushDownExplain() throws IOException {
"source=opensearch-sql_test_index_account"
+ "| patterns email method=brain mode=aggregation"));
}

@Ignore("The serialized string is unstable because of function properties")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add the test:
source=opensearch-sql_test_index_account | where firstname != ''

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@songkant-aws can you add above test case in explain IT?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added the above test. But the test itself is optimized as bool filter query before hitting script pushdown codepath. Ideally we should find a query that is chosen by optimizer. I'm checking if there is one.

@Test
public void testFilterScriptPushDownExplain() throws Exception {
String expected =
isCalciteEnabled()
? loadFromFile("expectedOutput/calcite/explain_filter_script_push.json")
: loadFromFile("expectedOutput/ppl/explain_filter_script_push.json");

assertJsonEqualsIgnoreId(

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we avoid compare all function properties?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a member of FunctionExpression in V2. It has a reference of current Instant object. So the generated bytes string is not stable. It can't be avoided now.

expected,
explainQueryToString(
"source=opensearch-sql_test_index_account | where firstname ='Amber' and age - 2 = 30 |"
+ " fields firstname, age"));
}

@Ignore("The serialized string is unstable because of function properties")
@Test
public void testFilterFunctionScriptPushDownExplain() throws Exception {
String expected =
isCalciteEnabled()
? loadFromFile("expectedOutput/calcite/explain_filter_function_script_push.json")
: loadFromFile("expectedOutput/ppl/explain_filter_function_script_push.json");

assertJsonEqualsIgnoreId(
expected,
explainQueryToString(
"source=opensearch-sql_test_index_account | where length(firstname) = 5 and abs(age) ="
+ " 32 and balance = 39225 | fields firstname, age"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_ACCOUNT;
import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_BANK_WITH_NULL_VALUES;
import static org.opensearch.sql.util.MatcherUtils.rows;
import static org.opensearch.sql.util.MatcherUtils.schema;
import static org.opensearch.sql.util.MatcherUtils.verifyDataRows;
import static org.opensearch.sql.util.MatcherUtils.verifySchema;

import java.io.IOException;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -204,4 +206,27 @@ protected String getIncompatibleTypeErrMsg() {
.collect(Collectors.joining(",", "{", "}")),
"[LONG,STRING]");
}

@Test
public void testFilterScriptPushDown() throws IOException {
JSONObject actual =
executeQuery(
String.format(
"source=%s | where firstname ='Amber' and age - 2.0 = 30 | fields firstname, age",
TEST_INDEX_ACCOUNT));
verifySchema(actual, schema("firstname", "string"), schema("age", "bigint"));
verifyDataRows(actual, rows("Amber", 32));
}

@Test
public void testFilterScriptPushDownWithFunction() throws IOException {
JSONObject actual =
executeQuery(
String.format(
"source=%s | where length(firstname) = 5 and abs(age) = 32 and balance = 39225 |"
+ " fields firstname, age",
TEST_INDEX_ACCOUNT));
verifySchema(actual, schema("firstname", "string"), schema("age", "bigint"));
verifyDataRows(actual, rows("Amber", 32));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,11 @@ public static void assertJsonEqualsIgnoreId(String expected, String actual) {
}

private static String cleanUpId(String s) {
return eliminatePid(eliminateRelId(s));
return eliminateTimeStamp(eliminatePid(eliminateRelId(s)));
}

private static String eliminateTimeStamp(String s) {
return s.replaceAll("\\\\\"utcTimestamp\\\\\":\\d+", "\\\\\"utcTimestamp\\\\\":*");
}

private static String eliminateRelId(String s) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"calcite": {
"logical": "LogicalProject(firstname=[$1], age=[$8])\n LogicalFilter(condition=[AND(=(CHAR_LENGTH($1), 5), =(ABS($8), 32), =($3, 39225))])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
"physical": "CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]], PushDownContext=[[PROJECT->[firstname, balance, age], FILTER->AND(=(CHAR_LENGTH($0), 5), =(ABS($2), 32), =($1, 39225)), PROJECT->[firstname, age]], OpenSearchRequestBuilder(sourceBuilder={\"from\":0,\"timeout\":\"1m\",\"query\":{\"bool\":{\"must\":[{\"script\":{\"script\":{\"source\":\"public Object[] apply(Object root0) {\\n final String input_value = ((org.apache.calcite.DataContext) root0).get(\\\"firstname.keyword\\\") == null ? null : ((org.apache.calcite.DataContext) root0).get(\\\"firstname.keyword\\\").toString();\\n final Integer method_call_value = input_value == null ? null : Integer.valueOf(org.apache.calcite.runtime.SqlFunctions.charLength(input_value));\\n return new Object[] {\\n method_call_value == null ? null : Boolean.valueOf(method_call_value.intValue() == 5)};\\n}\\n\\n\",\"lang\":\"opensearch_compounded_script\",\"options\":{\"engine_type\":\"calcite\"},\"params\":{\"utcTimestamp\":*}},\"boost\":1.0}},{\"script\":{\"script\":{\"source\":\"public Object[] apply(Object root0) {\\n final Long input_value = (Long) ((org.apache.calcite.DataContext) root0).get(\\\"age\\\");\\n final Long method_call_value = input_value == null ? null : Long.valueOf(org.apache.calcite.runtime.SqlFunctions.abs(input_value.longValue()));\\n return new Object[] {\\n method_call_value == null ? null : Boolean.valueOf(method_call_value.longValue() == 32L)};\\n}\\n\\n\",\"lang\":\"opensearch_compounded_script\",\"options\":{\"engine_type\":\"calcite\"},\"params\":{\"utcTimestamp\":*}},\"boost\":1.0}},{\"term\":{\"balance\":{\"value\":39225,\"boost\":1.0}}}],\"adjust_pure_negative\":true,\"boost\":1.0}},\"_source\":{\"includes\":[\"firstname\",\"age\"],\"excludes\":[]},\"sort\":[{\"_doc\":{\"order\":\"asc\"}}]}, requestedTotalSize=2147483647, pageSize=null, startFrom=0)])\n"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"calcite": {
"logical": "LogicalProject(firstname=[$1], age=[$8])\n LogicalFilter(condition=[AND(=($1, 'Amber'), =(-($8, 2), 30))])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
"physical": "CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]], PushDownContext=[[PROJECT->[firstname, age], FILTER->AND(=($0, 'Amber'), =(-($1, 2), 30))], OpenSearchRequestBuilder(sourceBuilder={\"from\":0,\"timeout\":\"1m\",\"query\":{\"bool\":{\"must\":[{\"term\":{\"firstname.keyword\":{\"value\":\"Amber\",\"boost\":1.0}}},{\"script\":{\"script\":{\"source\":\"public Object[] apply(Object root0) {\\n final Long input_value = (Long) ((org.apache.calcite.DataContext) root0).get(\\\"age\\\");\\n final Long binary_call_value = input_value == null ? null : Long.valueOf(input_value.longValue() - 2L);\\n return new Object[] {\\n binary_call_value == null ? null : Boolean.valueOf(binary_call_value.longValue() == 30L)};\\n}\\n\\n\",\"lang\":\"opensearch_compounded_script\",\"options\":{\"engine_type\":\"calcite\"},\"params\":{\"utcTimestamp\":*}},\"boost\":1.0}}],\"adjust_pure_negative\":true,\"boost\":1.0}},\"_source\":{\"includes\":[\"firstname\",\"age\"],\"excludes\":[]},\"sort\":[{\"_doc\":{\"order\":\"asc\"}}]}, requestedTotalSize=2147483647, pageSize=null, startFrom=0)])\n"
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
{
"root": {
"name":"ProjectOperator",
"description":{
"fields":"[pattern_count, sample_logs, patterns_field]"
"name": "ProjectOperator",
"description": {
"fields": "[pattern_count, sample_logs, patterns_field]"
},
"children":[
"children": [
{
"name":"OpenSearchIndexScan",
"description":{
"request":"OpenSearchQueryRequest(indexName=opensearch-sql_test_index_account, sourceBuilder={\"from\":0,\"size\":0,\"timeout\":\"1m\",\"aggregations\":{\"composite_buckets\":{\"composite\":{\"size\":1000,\"sources\":[{\"patterns_field\":{\"terms\":{\"script\":{\"source\":\"rO0ABXNyADZvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5wYXJzZS5QYXR0ZXJuc0V4cHJlc3Npb26h4+bazqpHBgIAAloAEHVzZUN1c3RvbVBhdHRlcm5MAAdwYXR0ZXJudAAZTGphdmEvdXRpbC9yZWdleC9QYXR0ZXJuO3hyADNvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5wYXJzZS5QYXJzZUV4cHJlc3Npb27CZfCltUMmOQIABEwACmlkZW50aWZpZXJ0ACpMb3JnL29wZW5zZWFyY2gvc3FsL2V4cHJlc3Npb24vRXhwcmVzc2lvbjtMAA1pZGVudGlmaWVyU3RydAASTGphdmEvbGFuZy9TdHJpbmc7TAAHcGF0dGVybnEAfgADTAALc291cmNlRmllbGRxAH4AA3hyADBvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5GdW5jdGlvbkV4cHJlc3Npb26yKjDT3HVqewIAAkwACWFyZ3VtZW50c3QAEExqYXZhL3V0aWwvTGlzdDtMAAxmdW5jdGlvbk5hbWV0ADVMb3JnL29wZW5zZWFyY2gvc3FsL2V4cHJlc3Npb24vZnVuY3Rpb24vRnVuY3Rpb25OYW1lO3hwc3IAPXNoYWRlZC5jb20uZ29vZ2xlLmNvbW1vbi5jb2xsZWN0LkltbXV0YWJsZUxpc3QkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAVsACGVsZW1lbnRzdAATW0xqYXZhL2xhbmcvT2JqZWN0O3hwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAA3NyADFvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5SZWZlcmVuY2VFeHByZXNzaW9uq0TvXBIHhdYCAARMAARhdHRycQB+AARMAAVwYXRoc3EAfgAGTAAHcmF3UGF0aHEAfgAETAAEdHlwZXQAJ0xvcmcvb3BlbnNlYXJjaC9zcWwvZGF0YS90eXBlL0V4cHJUeXBlO3hwdAAFZW1haWxzcgAaamF2YS51dGlsLkFycmF5cyRBcnJheUxpc3TZpDy+zYgG0gIAAVsAAWFxAH4ACnhwdXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAXEAfgARcQB+ABFzcgA6b3JnLm9wZW5zZWFyY2guc3FsLm9wZW5zZWFyY2guZGF0YS50eXBlLk9wZW5TZWFyY2hUZXh0VHlwZbmXyjSCpmeCAgABTAAGZmllbGRzdAAPTGphdmEvdXRpbC9NYXA7eHIAOm9yZy5vcGVuc2VhcmNoLnNxbC5vcGVuc2VhcmNoLmRhdGEudHlwZS5PcGVuU2VhcmNoRGF0YVR5cGXCY7zKAvoFNQIAA0wADGV4cHJDb3JlVHlwZXQAK0xvcmcvb3BlbnNlYXJjaC9zcWwvZGF0YS90eXBlL0V4cHJDb3JlVHlwZTtMAAttYXBwaW5nVHlwZXQASExvcmcvb3BlbnNlYXJjaC9zcWwvb3BlbnNlYXJjaC9kYXRhL3R5cGUvT3BlblNlYXJjaERhdGFUeXBlJE1hcHBpbmdUeXBlO0wACnByb3BlcnRpZXNxAH4AF3hwfnIAKW9yZy5vcGVuc2VhcmNoLnNxbC5kYXRhLnR5cGUuRXhwckNvcmVUeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAHVU5LTk9XTn5yAEZvcmcub3BlbnNlYXJjaC5zcWwub3BlbnNlYXJjaC5kYXRhLnR5cGUuT3BlblNlYXJjaERhdGFUeXBlJE1hcHBpbmdUeXBlAAAAAAAAAAASAAB4cQB+AB10AARUZXh0c3IAPHNoYWRlZC5jb20uZ29vZ2xlLmNvbW1vbi5jb2xsZWN0LkltbXV0YWJsZU1hcCRTZXJpYWxpemVkRm9ybQAAAAAAAAAAAgACTAAEa2V5c3QAEkxqYXZhL2xhbmcvT2JqZWN0O0wABnZhbHVlc3EAfgAkeHB1cQB+AAwAAAAAdXEAfgAMAAAAAHNyABFqYXZhLnV0aWwuQ29sbFNlcleOq7Y6G6gRAwABSQADdGFneHAAAAADdwQAAAACdAAHa2V5d29yZHNxAH4AGH5xAH4AHHQABlNUUklOR35xAH4AIHQAB0tleXdvcmRxAH4AJXhzcgAvb3JnLm9wZW5zZWFyY2guc3FsLmV4cHJlc3Npb24uTGl0ZXJhbEV4cHJlc3Npb25FQi3wjMeCJAIAAUwACWV4cHJWYWx1ZXQAKUxvcmcvb3BlbnNlYXJjaC9zcWwvZGF0YS9tb2RlbC9FeHByVmFsdWU7eHBzcgAtb3JnLm9wZW5zZWFyY2guc3FsLmRhdGEubW9kZWwuRXhwclN0cmluZ1ZhbHVlAEEyJXOJDhMCAAFMAAV2YWx1ZXEAfgAEeHIAL29yZy5vcGVuc2VhcmNoLnNxbC5kYXRhLm1vZGVsLkFic3RyYWN0RXhwclZhbHVlyWu1dgYURIoCAAB4cHQAAHNxAH4AMHNxAH4AM3QADnBhdHRlcm5zX2ZpZWxkc3IAM29yZy5vcGVuc2VhcmNoLnNxbC5leHByZXNzaW9uLmZ1bmN0aW9uLkZ1bmN0aW9uTmFtZQuoOE3O9meXAgABTAAMZnVuY3Rpb25OYW1lcQB+AAR4cHQACHBhdHRlcm5zcQB+ADdxAH4AOXEAfgAycQB+ABAAcA==\",\"lang\":\"opensearch_query_expression\"},\"missing_bucket\":true,\"missing_order\":\"first\",\"order\":\"asc\"}}}]},\"aggregations\":{\"pattern_count\":{\"value_count\":{\"field\":\"_index\"}},\"sample_logs\":{\"top_hits\":{\"from\":0,\"size\":10,\"version\":false,\"seq_no_primary_term\":false,\"explain\":false,\"_source\":{\"includes\":[\"email\"],\"excludes\":[]}}}}}}}, needClean=true, searchDone=false, pitId=null, cursorKeepAlive=null, searchAfter=null, searchResponse=null)"},
"children":[]
"name": "OpenSearchIndexScan",
"description": {
"request": "OpenSearchQueryRequest(indexName=opensearch-sql_test_index_account, sourceBuilder={\"from\":0,\"size\":0,\"timeout\":\"1m\",\"aggregations\":{\"composite_buckets\":{\"composite\":{\"size\":1000,\"sources\":[{\"patterns_field\":{\"terms\":{\"script\":{\"source\":\"rO0ABXNyADZvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5wYXJzZS5QYXR0ZXJuc0V4cHJlc3Npb26h4+bazqpHBgIAAloAEHVzZUN1c3RvbVBhdHRlcm5MAAdwYXR0ZXJudAAZTGphdmEvdXRpbC9yZWdleC9QYXR0ZXJuO3hyADNvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5wYXJzZS5QYXJzZUV4cHJlc3Npb27CZfCltUMmOQIABEwACmlkZW50aWZpZXJ0ACpMb3JnL29wZW5zZWFyY2gvc3FsL2V4cHJlc3Npb24vRXhwcmVzc2lvbjtMAA1pZGVudGlmaWVyU3RydAASTGphdmEvbGFuZy9TdHJpbmc7TAAHcGF0dGVybnEAfgADTAALc291cmNlRmllbGRxAH4AA3hyADBvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5GdW5jdGlvbkV4cHJlc3Npb26yKjDT3HVqewIAAkwACWFyZ3VtZW50c3QAEExqYXZhL3V0aWwvTGlzdDtMAAxmdW5jdGlvbk5hbWV0ADVMb3JnL29wZW5zZWFyY2gvc3FsL2V4cHJlc3Npb24vZnVuY3Rpb24vRnVuY3Rpb25OYW1lO3hwc3IAPXNoYWRlZC5jb20uZ29vZ2xlLmNvbW1vbi5jb2xsZWN0LkltbXV0YWJsZUxpc3QkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAVsACGVsZW1lbnRzdAATW0xqYXZhL2xhbmcvT2JqZWN0O3hwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAA3NyADFvcmcub3BlbnNlYXJjaC5zcWwuZXhwcmVzc2lvbi5SZWZlcmVuY2VFeHByZXNzaW9uq0TvXBIHhdYCAARMAARhdHRycQB+AARMAAVwYXRoc3EAfgAGTAAHcmF3UGF0aHEAfgAETAAEdHlwZXQAJ0xvcmcvb3BlbnNlYXJjaC9zcWwvZGF0YS90eXBlL0V4cHJUeXBlO3hwdAAFZW1haWxzcgAaamF2YS51dGlsLkFycmF5cyRBcnJheUxpc3TZpDy+zYgG0gIAAVsAAWFxAH4ACnhwdXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAXEAfgARcQB+ABFzcgA6b3JnLm9wZW5zZWFyY2guc3FsLm9wZW5zZWFyY2guZGF0YS50eXBlLk9wZW5TZWFyY2hUZXh0VHlwZbmXyjSCpmeCAgABTAAGZmllbGRzdAAPTGphdmEvdXRpbC9NYXA7eHIAOm9yZy5vcGVuc2VhcmNoLnNxbC5vcGVuc2VhcmNoLmRhdGEudHlwZS5PcGVuU2VhcmNoRGF0YVR5cGXCY7zKAvoFNQIAA0wADGV4cHJDb3JlVHlwZXQAK0xvcmcvb3BlbnNlYXJjaC9zcWwvZGF0YS90eXBlL0V4cHJDb3JlVHlwZTtMAAttYXBwaW5nVHlwZXQASExvcmcvb3BlbnNlYXJjaC9zcWwvb3BlbnNlYXJjaC9kYXRhL3R5cGUvT3BlblNlYXJjaERhdGFUeXBlJE1hcHBpbmdUeXBlO0wACnByb3BlcnRpZXNxAH4AF3hwfnIAKW9yZy5vcGVuc2VhcmNoLnNxbC5kYXRhLnR5cGUuRXhwckNvcmVUeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAAHVU5LTk9XTn5yAEZvcmcub3BlbnNlYXJjaC5zcWwub3BlbnNlYXJjaC5kYXRhLnR5cGUuT3BlblNlYXJjaERhdGFUeXBlJE1hcHBpbmdUeXBlAAAAAAAAAAASAAB4cQB+AB10AARUZXh0c3IAPHNoYWRlZC5jb20uZ29vZ2xlLmNvbW1vbi5jb2xsZWN0LkltbXV0YWJsZU1hcCRTZXJpYWxpemVkRm9ybQAAAAAAAAAAAgACTAAEa2V5c3QAEkxqYXZhL2xhbmcvT2JqZWN0O0wABnZhbHVlc3EAfgAkeHB1cQB+AAwAAAAAdXEAfgAMAAAAAHNyABFqYXZhLnV0aWwuQ29sbFNlcleOq7Y6G6gRAwABSQADdGFneHAAAAADdwQAAAACdAAHa2V5d29yZHNxAH4AGH5xAH4AHHQABlNUUklOR35xAH4AIHQAB0tleXdvcmRxAH4AJXhzcgAvb3JnLm9wZW5zZWFyY2guc3FsLmV4cHJlc3Npb24uTGl0ZXJhbEV4cHJlc3Npb25FQi3wjMeCJAIAAUwACWV4cHJWYWx1ZXQAKUxvcmcvb3BlbnNlYXJjaC9zcWwvZGF0YS9tb2RlbC9FeHByVmFsdWU7eHBzcgAtb3JnLm9wZW5zZWFyY2guc3FsLmRhdGEubW9kZWwuRXhwclN0cmluZ1ZhbHVlAEEyJXOJDhMCAAFMAAV2YWx1ZXEAfgAEeHIAL29yZy5vcGVuc2VhcmNoLnNxbC5kYXRhLm1vZGVsLkFic3RyYWN0RXhwclZhbHVlyWu1dgYURIoCAAB4cHQAAHNxAH4AMHNxAH4AM3QADnBhdHRlcm5zX2ZpZWxkc3IAM29yZy5vcGVuc2VhcmNoLnNxbC5leHByZXNzaW9uLmZ1bmN0aW9uLkZ1bmN0aW9uTmFtZQuoOE3O9meXAgABTAAMZnVuY3Rpb25OYW1lcQB+AAR4cHQACHBhdHRlcm5zcQB+ADdxAH4AOXEAfgAycQB+ABAAcA==\",\"lang\":\"opensearch_compounded_script\"},\"missing_bucket\":true,\"missing_order\":\"first\",\"order\":\"asc\"}}}]},\"aggregations\":{\"pattern_count\":{\"value_count\":{\"field\":\"_index\"}},\"sample_logs\":{\"top_hits\":{\"from\":0,\"size\":10,\"version\":false,\"seq_no_primary_term\":false,\"explain\":false,\"_source\":{\"includes\":[\"email\"],\"excludes\":[]}}}}}}}, needClean=true, searchDone=false, pitId=*, cursorKeepAlive=null, searchAfter=null, searchResponse=null)"
},
"children": []
}
]
}
Expand Down
1 change: 1 addition & 0 deletions opensearch/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ dependencies {
compileOnly group: 'org.opensearch.client', name: 'opensearch-rest-high-level-client', version: "${opensearch_version}"
implementation group: 'org.opensearch', name:'opensearch-ml-client', version: "${opensearch_build}"
implementation group: 'org.opensearch', name:'geospatial-client', version: "${opensearch_build}"
implementation group: 'org.codehaus.janino', name: 'janino', version: '3.1.11'
Comment thread
penghuo marked this conversation as resolved.
Outdated

annotationProcessor 'org.immutables:value:2.8.8'
compileOnly 'org.immutables:value-annotations:2.8.8'
Expand Down
Loading