Skip to content

Commit

Permalink
ES|QL kql function. (elastic#116764)
Browse files Browse the repository at this point in the history
  • Loading branch information
afoucret authored Nov 25, 2024
1 parent 105d4f8 commit ff58d89
Show file tree
Hide file tree
Showing 29 changed files with 1,149 additions and 66 deletions.
5 changes: 5 additions & 0 deletions docs/reference/esql/functions/description/kql.asciidoc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions docs/reference/esql/functions/examples/kql.asciidoc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 37 additions & 0 deletions docs/reference/esql/functions/kibana/definition/kql.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions docs/reference/esql/functions/kibana/docs/kql.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions docs/reference/esql/functions/layout/kql.asciidoc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions docs/reference/esql/functions/parameters/kql.asciidoc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions docs/reference/esql/functions/signature/kql.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions docs/reference/esql/functions/types/kql.asciidoc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions x-pack/plugin/esql/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ dependencies {
compileOnly project(':modules:lang-painless:spi')
compileOnly project(xpackModule('esql-core'))
compileOnly project(xpackModule('ml'))
implementation project(xpackModule('kql'))
implementation project('compute')
implementation project('compute:ann')
implementation project(':libs:dissect')
Expand All @@ -50,6 +51,7 @@ dependencies {
testImplementation(testArtifact(project(xpackModule('core'))))
testImplementation project(path: xpackModule('enrich'))
testImplementation project(path: xpackModule('spatial'))
testImplementation project(path: xpackModule('kql'))

testImplementation project(path: ':modules:reindex')
testImplementation project(path: ':modules:parent-join')
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
###############################################
# Tests for KQL function
#

kqlWithField
required_capability: kql_function

// tag::kql-with-field[]
FROM books
| WHERE KQL("author: Faulkner")
| KEEP book_no, author
| SORT book_no
| LIMIT 5;
// end::kql-with-field[]

// tag::kql-with-field-result[]
book_no:keyword | author:text
2378 | [Carol Faulkner, Holly Byers Ochoa, Lucretia Mott]
2713 | William Faulkner
2847 | Colleen Faulkner
2883 | William Faulkner
3293 | Danny Faulkner
;
// end::kql-with-field-result[]

kqlWithMultipleFields
required_capability: kql_function

from books
| where kql("title:Return* AND author:*Tolkien")
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
2714 | Return of the King Being the Third Part of The Lord of the Rings
7350 | Return of the Shadow
;

kqlWithQueryExpressions
required_capability: kql_function

from books
| where kql(CONCAT("title:Return*", " AND author:*Tolkien"))
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
2714 | Return of the King Being the Third Part of The Lord of the Rings
7350 | Return of the Shadow
;

kqlWithConjunction
required_capability: kql_function

from books
| where kql("title: Rings") and ratings > 4.6
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
4023 | A Tolkien Compass: Including J. R. R. Tolkien's Guide to the Names in The Lord of the Rings
7140 | The Lord of the Rings Poster Collection: Six Paintings by Alan Lee (No. 1)
;

kqlWithFunctionPushedToLucene
required_capability: kql_function

from hosts
| where kql("host: beta") and cidr_match(ip1, "127.0.0.2/32", "127.0.0.3/32")
| keep card, host, ip0, ip1;
ignoreOrder:true

card:keyword |host:keyword |ip0:ip |ip1:ip
eth1 |beta |127.0.0.1 |127.0.0.2
;

kqlWithNonPushableConjunction
required_capability: kql_function

from books
| where kql("title: Rings") and length(title) > 75
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
4023 |A Tolkien Compass: Including J. R. R. Tolkien's Guide to the Names in The Lord of the Rings
;

kqlWithMultipleWhereClauses
required_capability: kql_function

from books
| where kql("title: rings")
| where kql("year > 1 AND year < 2005")
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
4023 | A Tolkien Compass: Including J. R. R. Tolkien's Guide to the Names in The Lord of the Rings
7140 | The Lord of the Rings Poster Collection: Six Paintings by Alan Lee (No. 1)
;


kqlWithMultivaluedTextField
required_capability: kql_function

from employees
| where kql("job_positions: Tech Lead AND job_positions:(Reporting Analyst)")
| keep emp_no, first_name, last_name;
ignoreOrder:true

emp_no:integer | first_name:keyword | last_name:keyword
10004 | Chirstian | Koblick
10010 | Duangkaew | Piveteau
10011 | Mary | Sluis
10088 | Jungsoon | Syrzycki
10093 | Sailaja | Desikan
10097 | Remzi | Waschkowski
;

kqlWithMultivaluedNumericField
required_capability: kql_function

from employees
| where kql("salary_change > 14")
| keep emp_no, first_name, last_name, salary_change;
ignoreOrder:true

emp_no:integer | first_name:keyword | last_name:keyword | salary_change:double
10003 | Parto | Bamford | [12.82, 14.68]
10015 | Guoxiang | Nooteboom | [12.4, 14.25]
10023 | Bojan | Montemayor | [0.8, 14.63]
10040 | Weiyi | Meriste | [-8.94, 1.92, 6.97, 14.74]
10061 | Tse | Herber | [-2.58, -0.95, 14.39]
10065 | Satosi | Awdeh | [-9.81, -1.47, 14.44]
10099 | Valter | Sullins | [-8.78, -3.98, 10.71, 14.26]
;

testMultiValuedFieldWithConjunction
required_capability: kql_function

from employees
| where (kql("job_positions: (Data Scientist) OR job_positions:(Support Engineer)")) and gender == "F"
| keep emp_no, first_name, last_name;
ignoreOrder:true

emp_no:integer | first_name:keyword | last_name:keyword
10023 | Bojan | Montemayor
10041 | Uri | Lenart
10044 | Mingsen | Casley
10053 | Sanjiv | Zschoche
10069 | Margareta | Bierman
;
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ book_no:keyword | title:text
;


matchMultivaluedTextField
required_capability: match_function
qstrWithMultivaluedTextField
required_capability: qstr_function

from employees
| where qstr("job_positions: (Tech Lead) AND job_positions:(Reporting Analyst)")
Expand All @@ -118,8 +118,8 @@ emp_no:integer | first_name:keyword | last_name:keyword
10097 | Remzi | Waschkowski
;

matchMultivaluedNumericField
required_capability: match_function
qstrWithMultivaluedNumericField
required_capability: qstr_function

from employees
| where qstr("salary_change: [14 TO *]")
Expand All @@ -137,7 +137,7 @@ emp_no:integer | first_name:keyword | last_name:keyword | salary_change:double
;

testMultiValuedFieldWithConjunction
required_capability: match_function
required_capability: qstr_function

from employees
| where (qstr("job_positions: (Data Scientist) OR job_positions:(Support Engineer)")) and gender == "F"
Expand Down
Loading

0 comments on commit ff58d89

Please sign in to comment.