Hi team, I’m using CrateDB 5.10.11, now I have a table to store application log in object type, and some column is ARRAY(TEXT), I want to perform fuzzy query on these column with ARRAY(TEXT). How to implement it? Thanks.
cr> select * from sdtest where log['billIds'] like '%484575b%';
UnsupportedFunctionException[Unknown function: (doc.sdtest.log['billIds'] LIKE '%484575b%'), no overload found for matching argument types: (text_array, text). Possible candidates: op_like(text, text):boolean, op_like(text, text, text):boolean]
io.crate.exceptions.UnsupportedFunctionException: Unknown function: (doc.sdtest.log['billIds'] LIKE '%484575b%'), no overload found for matching argument types: (text_array, text). Possible candidates: op_like(text, text):boolean, op_like(text, text, text):boolean
at io.crate.metadata.Functions.raiseUnknownFunction(Functions.java:370)
at io.crate.metadata.Functions.resolveFunctionBySignature(Functions.java:262)
at io.crate.metadata.Functions.get(Functions.java:163)
at io.crate.metadata.Functions.get(Functions.java:141)
at io.crate.analyze.expressions.ExpressionAnalyzer.allocateBuiltinOrUdfFunction(ExpressionAnalyzer.java:1239)
at io.crate.analyze.expressions.ExpressionAnalyzer.allocateFunction(ExpressionAnalyzer.java:1212)
at io.crate.analyze.expressions.ExpressionAnalyzer.allocateFunction(ExpressionAnalyzer.java:1203)
at io.crate.analyze.expressions.ExpressionAnalyzer$InnerExpressionAnalyzer.visitLikePredicate(ExpressionAnalyzer.java:875)
at io.crate.analyze.expressions.ExpressionAnalyzer$InnerExpressionAnalyzer.visitLikePredicate(ExpressionAnalyzer.java:449)
at io.crate.sql.tree.LikePredicate.accept(LikePredicate.java:61)
at io.crate.analyze.expressions.ExpressionAnalyzer.convert(ExpressionAnalyzer.java:250)
at io.crate.analyze.expressions.ExpressionAnalyzer.lambda$generateQuerySymbol$1(ExpressionAnalyzer.java:259)
at java.base/java.util.Optional.map(Optional.java:260)
The table definition are as follows.
CREATE TABLE IF NOT EXISTS "doc"."sdtest" (
"log" OBJECT(DYNAMIC) AS (
"zipkinSpanId" TEXT,
"billIds" ARRAY(TEXT),
"optUser" TEXT,
"auditLog" OBJECT(DYNAMIC) AS (
"fields" OBJECT(DYNAMIC) AS (
"isUpload" TEXT,
"retailPrice" TEXT,
"updTime" TEXT,
"uploadStatusMessage" TEXT
),
"afterSave" OBJECT(DYNAMIC) AS (
"isUpload" TEXT,
"retailPrice" TEXT,
"updTime" TEXT,
"uploadStatusMessage" TEXT
),
"beforeSave" OBJECT(DYNAMIC) AS (
"isUpload" TEXT,
"retailPrice" TEXT,
"updTime" TEXT,
"uploadStatusMessage" TEXT
)
),
"level" TEXT,
"typeName" TEXT,
"ccloudTraceId" TEXT,
"txId" TEXT,
"zipkinTraceId" TEXT,
"env" TEXT,
"message" TEXT,
"type" TEXT,
"esIndex" TEXT,
"prodLine" TEXT,
"application" TEXT,
"id" TEXT,
"optTime" TEXT,
"ccloudTransactionId" TEXT,
"zipkinParentId" TEXT
)
)
CLUSTERED INTO 8 SHARDS
WITH (
column_policy = 'strict',
number_of_replicas = '0-1'
)