You're viewing version 2.5 of the OpenSearch documentation. This version is no longer maintained. For the latest version, see the current documentation . For information about OpenSearch version maintenance, see Release Schedule and Maintenance Policy .
Functions You must enable fielddata in the document mapping for most string functions to work properly.
The specification shows the return type of the function with a generic type T as the argument. For example, abs(number T) -> T means that the function abs accepts a numerical argument of type T, which could be any subtype of the number type, and it returns the actual type of T as the return type.
The SQL plugin supports the following common functions shared across the SQL and PPL languages.
Mathematical Function Specification Example abs abs(number T) -> T SELECT abs(0.5) FROM my-index LIMIT 1 add add(number T, number) -> T SELECT add(1, 5) FROM my-index LIMIT 1 cbrt cbrt(number T) -> T SELECT cbrt(0.5) FROM my-index LIMIT 1 ceil ceil(number T) -> T SELECT ceil(0.5) FROM my-index LIMIT 1 conv conv(string T, int a, int b) -> T SELECT CONV('12', 10, 16), CONV('2C', 16, 10), CONV(12, 10, 2), CONV(1111, 2, 10) FROM my-index LIMIT 1 crc32 crc32(string T) -> T SELECT crc32('MySQL') FROM my-index LIMIT 1 divide divide(number T, number) -> T SELECT divide(1, 0.5) FROM my-index LIMIT 1 e e() -> double SELECT e() FROM my-index LIMIT 1 exp exp(number T) -> T SELECT exp(0.5) FROM my-index LIMIT 1 expm1 expm1(number T) -> T SELECT expm1(0.5) FROM my-index LIMIT 1 floor floor(number T) -> T SELECT floor(0.5) AS Rounded_Down FROM my-index LIMIT 1 ln ln(number T) -> double SELECT ln(10) FROM my-index LIMIT 1 log log(number T) -> double or log(number T, number) -> double SELECT log(10) FROM my-index LIMIT 1 log2 log2(number T) -> double SELECT log2(10) FROM my-index LIMIT 1 log10 log10(number T) -> double SELECT log10(10) FROM my-index LIMIT 1 mod mod(number T, number) -> T SELECT modulus(2, 3) FROM my-index LIMIT 1 multiply multiply(number T, number) -> number SELECT multiply(2, 3) FROM my-index LIMIT 1 pi pi() -> double SELECT pi() FROM my-index LIMIT 1 pow pow(number T) -> T or pow(number T, number) -> T SELECT pow(2, 3) FROM my-index LIMIT 1 power power(number T) -> T or power(number T, number) -> T SELECT power(2, 3) FROM my-index LIMIT 1 rand rand() -> number or rand(number T) -> T SELECT rand(0.5) FROM my-index LIMIT 1 rint rint(number T) -> T SELECT rint(1.5) FROM my-index LIMIT 1 round round(number T) -> T SELECT round(1.5) FROM my-index LIMIT 1 sign sign(number T) -> T SELECT sign(1.5) FROM my-index LIMIT 1 signum signum(number T) -> T SELECT signum(0.5) FROM my-index LIMIT 1 sqrt sqrt(number T) -> T SELECT sqrt(0.5) FROM my-index LIMIT 1 strcmp strcmp(string T, string T) -> T SELECT strcmp('hello', 'hello') FROM my-index LIMIT 1 subtract subtract(number T, number) -> T SELECT subtract(3, 2) FROM my-index LIMIT 1 truncate truncate(number T, number T) -> T SELECT truncate(56.78, 1) FROM my-index LIMIT 1 / number [op] number -> number SELECT 1 / 100 FROM my-index LIMIT 1 % number [op] number -> number SELECT 1 % 100 FROM my-index LIMIT 1
Trigonometric Function Specification Example acos acos(number T) -> double SELECT acos(0.5) FROM my-index LIMIT 1 asin asin(number T) -> double SELECT asin(0.5) FROM my-index LIMIT 1 atan atan(number T) -> double SELECT atan(0.5) FROM my-index LIMIT 1 atan2 atan2(number T, number) -> double SELECT atan2(1, 0.5) FROM my-index LIMIT 1 cos cos(number T) -> double SELECT cos(0.5) FROM my-index LIMIT 1 cosh cosh(number T) -> double SELECT cosh(0.5) FROM my-index LIMIT 1 cot cot(number T) -> double SELECT cot(0.5) FROM my-index LIMIT 1 degrees degrees(number T) -> double SELECT degrees(0.5) FROM my-index LIMIT 1 radians radians(number T) -> double SELECT radians(0.5) FROM my-index LIMIT 1 sin sin(number T) -> double SELECT sin(0.5) FROM my-index LIMIT 1 sinh sinh(number T) -> double SELECT sinh(0.5) FROM my-index LIMIT 1 tan tan(number T) -> double SELECT tan(0.5) FROM my-index LIMIT 1
Date and time Function Specification Example adddate adddate(date, INTERVAL expr unit) -> date SELECT adddate(date('2020-08-26'), INTERVAL 1 hour) FROM my-index LIMIT 1 curdate curdate() -> date SELECT curdate() FROM my-index LIMIT 1 date date(date) -> date SELECT date() FROM my-index LIMIT 1 date_format date_format(date, string) -> string or date_format(date, string, string) -> string SELECT date_format(date, 'Y') FROM my-index LIMIT 1 date_sub date_sub(date, INTERVAL expr unit) -> date SELECT date_sub(date('2008-01-02'), INTERVAL 31 day) FROM my-index LIMIT 1 dayofmonth dayofmonth(date) -> integer SELECT dayofmonth(date) FROM my-index LIMIT 1 dayname dayname(date) -> string SELECT dayname(date('2020-08-26')) FROM my-index LIMIT 1 dayofyear dayofyear(date) -> integer SELECT dayofyear(date('2020-08-26')) FROM my-index LIMIT 1 dayofweek dayofweek(date) -> integer SELECT dayofweek(date('2020-08-26')) FROM my-index LIMIT 1 from_days from_days(N) -> integer SELECT from_days(733687) FROM my-index LIMIT 1 hour hour(time) -> integer SELECT hour((time '01:02:03')) FROM my-index LIMIT 1 maketime maketime(integer, integer, integer) -> date SELECT maketime(1, 2, 3) FROM my-index LIMIT 1 microsecond microsecond(expr) -> integer SELECT microsecond((time '01:02:03.123456')) FROM my-index LIMIT 1 minute minute(expr) -> integer SELECT minute((time '01:02:03')) FROM my-index LIMIT 1 month month(date) -> integer SELECT month(date) FROM my-index monthname monthname(date) -> string SELECT monthname(date) FROM my-index now now() -> date SELECT now() FROM my-index LIMIT 1 quarter quarter(date) -> integer SELECT quarter(date('2020-08-26')) FROM my-index LIMIT 1 second second(time) -> integer SELECT second((time '01:02:03')) FROM my-index LIMIT 1 subdate subdate(date, INTERVAL expr unit) -> date, datetime SELECT subdate(date('2008-01-02'), INTERVAL 31 day) FROM my-index LIMIT 1 time time(expr) -> time SELECT time('13:49:00') FROM my-index LIMIT 1 time_to_sec time_to_sec(time) -> long SELECT time_to_sec(time '22:23:00') FROM my-index LIMIT 1 timestamp timestamp(date) -> date SELECT timestamp(date) FROM my-index LIMIT 1 to_days to_days(date) -> long SELECT to_days(date '2008-10-07') FROM my-index LIMIT 1 week week(date[mode]) -> integer SELECT week(date('2008-02-20')) FROM my-index LIMIT 1 year year(date) -> integer SELECT year(date) FROM my-index LIMIT 1
String Function Specification Example ascii ascii(string T) -> integer SELECT ascii(name.keyword) FROM my-index LIMIT 1 concat concat(str1, str2) -> string SELECT concat('hello', 'world') FROM my-index LIMIT 1 concat_ws concat_ws(separator, string, string…) -> string SELECT concat_ws("-", "Tutorial", "is", "fun!") FROM my-index LIMIT 1 left left(string T, integer) -> T SELECT left('hello', 2) FROM my-index LIMIT 1 length length(string) -> integer SELECT length('hello') FROM my-index LIMIT 1 locate locate(string, string, integer) -> integer or locate(string, string) -> INTEGER SELECT locate('o', 'hello') FROM my-index LIMIT 1, SELECT locate('l', 'hello', 3) FROM my-index LIMIT 1 replace replace(string T, string, string) -> T SELECT replace('hello', 'l', 'x') FROM my-index LIMIT 1 right right(string T, integer) -> T SELECT right('hello', 1) FROM my-index LIMIT 1 rtrim rtrim(string T) -> T SELECT rtrim(name.keyword) FROM my-index LIMIT 1 substring substring(string T, integer, integer) -> T SELECT substring(name.keyword, 2,5) FROM my-index LIMIT 1 trim trim(string T) -> T SELECT trim(' hello') FROM my-index LIMIT 1 upper upper(string T) -> T SELECT upper('helloworld') FROM my-index LIMIT 1
Aggregate Function Specification Example avg avg(number T) -> T SELECT avg(2, 3) FROM my-index LIMIT 1 count count(number T) -> T SELECT count(date) FROM my-index LIMIT 1 min min(number T, number) -> T SELECT min(2, 3) FROM my-index LIMIT 1 show show(string T) -> T SHOW TABLES LIKE my-index
Advanced Function Specification Example if if(boolean, es_type, es_type) -> es_type SELECT if(false, 0, 1) FROM my-index LIMIT 1, SELECT if(true, 0, 1) FROM my-index LIMIT 1 ifnull ifnull(es_type, es_type) -> es_type SELECT ifnull('hello', 1) FROM my-index LIMIT 1, SELECT ifnull(null, 1) FROM my-index LIMIT 1 isnull isnull(es_type) -> integer SELECT isnull(null) FROM my-index LIMIT 1, SELECT isnull(1) FROM my-index LIMIT 1
Relevance-based search (full-text search) These functions are only available in the WHERE clause. For their descriptions and usage examples in SQL and PPL, see Full-text search .