diff --git a/src-docs/src/views/search_bar/props_info.js b/src-docs/src/views/search_bar/props_info.js index 9e7628c7c2..da7f61e4a8 100644 --- a/src-docs/src/views/search_bar/props_info.js +++ b/src-docs/src/views/search_bar/props_info.js @@ -72,12 +72,12 @@ export const propsInfo = { 'static (query: #Query | string, items: Object[], options?: #ExecuteQueryOptions) => Object[]', }, }, - toESQuery: { + toOpenSearchQuery: { description: - 'Builds and returns an Elasticsearch query object out of the given query', + 'Builds and returns an OpenSearch query object out of the given query', type: { name: - 'static (query: #Query | string, options?: #ToESQueryOptions) => ESQuery', + 'static (query: #Query | string, options?: #ToOpenSearchQueryOptions) => OpenSearchQuery', }, }, }, @@ -458,7 +458,7 @@ export const propsInfo = { }, }, - ToESQueryOptions: { + ToOpenSearchQueryOptions: { __docgenInfo: { _ouiObjectType: 'type', props: { @@ -466,13 +466,13 @@ export const propsInfo = { description: 'An array of additional queries to add as a `must` clause to the generated query', required: false, - type: { name: 'ESQuery[]' }, + type: { name: 'OpenSearchQuery[]' }, }, extraMustNotQueries: { description: 'An array of additional queries to add as a `must_not` clause to the generated query', required: false, - type: { name: 'ESQuery[]' }, + type: { name: 'OpenSearchQuery[]' }, }, }, }, diff --git a/src-docs/src/views/search_bar/search_bar.js b/src-docs/src/views/search_bar/search_bar.js index 839aff529d..c88fbdca81 100644 --- a/src-docs/src/views/search_bar/search_bar.js +++ b/src-docs/src/views/search_bar/search_bar.js @@ -253,39 +253,41 @@ export const SearchBar = () => { return ; }; - let esQueryDsl; - let esQueryString; + let opensearchQueryDsl; + let opensearchQueryString; try { - esQueryDsl = OuiSearchBar.Query.toESQuery(query); + opensearchQueryDsl = OuiSearchBar.Query.toOpenSearchQuery(query); } catch (e) { - esQueryDsl = e.toString(); + opensearchQueryDsl = e.toString(); } try { - esQueryString = OuiSearchBar.Query.toESQueryString(query); + opensearchQueryString = OuiSearchBar.Query.toOpenSearchQueryString(query); } catch (e) { - esQueryString = e.toString(); + opensearchQueryString = e.toString(); } const content = renderError() || ( -

Elasticsearch Query String

+

OpenSearch Query String

- {esQueryString ? esQueryString : ''} + {opensearchQueryString ? opensearchQueryString : ''} -

Elasticsearch Query DSL

+

OpenSearch Query DSL

- {esQueryDsl ? JSON.stringify(esQueryDsl, null, 2) : ''} + {opensearchQueryDsl + ? JSON.stringify(opensearchQueryDsl, null, 2) + : ''}
diff --git a/src-docs/src/views/search_bar/search_bar_filters.js b/src-docs/src/views/search_bar/search_bar_filters.js index 2ae4cf0fe7..491b258a98 100644 --- a/src-docs/src/views/search_bar/search_bar_filters.js +++ b/src-docs/src/views/search_bar/search_bar_filters.js @@ -240,28 +240,32 @@ export const SearchBarFilters = () => { return ; }; - const esQueryDsl = OuiSearchBar.Query.toESQuery(query); - const esQueryString = OuiSearchBar.Query.toESQueryString(query); + const opensearchQueryDsl = OuiSearchBar.Query.toOpenSearchQuery(query); + const opensearchQueryString = OuiSearchBar.Query.toOpenSearchQueryString( + query + ); const content = renderError() || ( -

Elasticsearch Query String

+

OpenSearch Query String

- {esQueryString ? esQueryString : ''} + {opensearchQueryString ? opensearchQueryString : ''} -

Elasticsearch Query DSL

+

OpenSearch Query DSL

- {esQueryDsl ? JSON.stringify(esQueryDsl, null, 2) : ''} + {opensearchQueryDsl + ? JSON.stringify(opensearchQueryDsl, null, 2) + : ''}
diff --git a/src/components/search_bar/query/__snapshots__/ast_to_es_query_string.test.ts.snap b/src/components/search_bar/query/__snapshots__/ast_to_es_query_string.test.ts.snap deleted file mode 100644 index 69990f64ce..0000000000 --- a/src/components/search_bar/query/__snapshots__/ast_to_es_query_string.test.ts.snap +++ /dev/null @@ -1,25 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`astToEsQueryString ast - '*' 1`] = `"*"`; - -exports[`astToEsQueryString ast - '-group:es group:kibana -group:beats group:logstash' 1`] = `"-group:es +group:kibana -group:beats +group:logstash"`; - -exports[`astToEsQueryString ast - 'is:online group:kibana john' 1`] = `"+online:true +group:kibana +john"`; - -exports[`astToEsQueryString ast - 'john -doe is:online group:eng group:es -group:kibana -is:active' 1`] = `"+john -doe +online:true +group:eng +group:es -group:kibana +active:false"`; - -exports[`astToEsQueryString ast - 'john -sales' 1`] = `"+john -sales"`; - -exports[`astToEsQueryString ast - 'john group:(eng or "marketing org") -group:"kibana team" 1`] = `"+john +(group:eng OR group:\\"marketing org\\") -group:\\"kibana team\\""`; - -exports[`astToEsQueryString ast - 'john group:(eng or es) -group:kibana' 1`] = `"+john +(group:eng OR group:es) -group:kibana"`; - -exports[`astToEsQueryString ast - -count<=4 size<5 age>=3 -number>9 1`] = `"-count:<=4 +size:<5 +age:>=3 -number:>9"`; - -exports[`astToEsQueryString ast - count>3 1`] = `"+count:>3"`; - -exports[`astToEsQueryString ast - date:'2004-03' -date<'2004-03-10' 1`] = `"+date:(>=2004-03 AND <2004-04) -date:<2004-03-10"`; - -exports[`astToEsQueryString ast - date>'2004-02' -otherDate>='2004-03-10' 1`] = `"+date:>=2004-03 -date:>=2004-03-10"`; - -exports[`astToEsQueryString ast - date>='2004-03-22' 1`] = `"+date:>=2004-03-22"`; diff --git a/src/components/search_bar/query/__snapshots__/ast_to_es_query_dsl.test.ts.snap b/src/components/search_bar/query/__snapshots__/ast_to_opensearch_query_dsl.test.ts.snap similarity index 82% rename from src/components/search_bar/query/__snapshots__/ast_to_es_query_dsl.test.ts.snap rename to src/components/search_bar/query/__snapshots__/ast_to_opensearch_query_dsl.test.ts.snap index 6299836a17..b939a145c6 100644 --- a/src/components/search_bar/query/__snapshots__/ast_to_es_query_dsl.test.ts.snap +++ b/src/components/search_bar/query/__snapshots__/ast_to_opensearch_query_dsl.test.ts.snap @@ -1,12 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`astToEsQueryDsl ast - '' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - '' 1`] = ` Object { "match_all": Object {}, } `; -exports[`astToEsQueryDsl ast - '-group:es group:kibana -group:beats group:logstash' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - '-group:opensearch group:dashboards -group:beats group:logstash' 1`] = ` Object { "bool": Object { "must": Array [ @@ -14,7 +14,7 @@ Object { "match": Object { "group": Object { "operator": "and", - "query": "kibana logstash", + "query": "dashboards logstash", }, }, }, @@ -24,7 +24,7 @@ Object { "match": Object { "group": Object { "operator": "and", - "query": "es beats", + "query": "opensearch beats", }, }, }, @@ -33,7 +33,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - 'is:online group:kibana john' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - 'is:online group:dashboards john' 1`] = ` Object { "bool": Object { "must": Array [ @@ -46,7 +46,7 @@ Object { "match": Object { "group": Object { "operator": "and", - "query": "kibana", + "query": "dashboards", }, }, }, @@ -60,7 +60,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - 'john -doe is:online group:eng group:es -group:kibana -is:active' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - 'john -doe is:online group:eng group:opensearch -group:dashboards -is:active' 1`] = ` Object { "bool": Object { "must": Array [ @@ -73,7 +73,7 @@ Object { "match": Object { "group": Object { "operator": "and", - "query": "eng es", + "query": "eng opensearch", }, }, }, @@ -98,7 +98,7 @@ Object { "match": Object { "group": Object { "operator": "and", - "query": "kibana", + "query": "dashboards", }, }, }, @@ -107,7 +107,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - 'john -sales' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - 'john -sales' 1`] = ` Object { "bool": Object { "must": Array [ @@ -128,7 +128,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - 'john group:(eng or "marketing org") -group:"kibana team" 1`] = ` +exports[`astToOpenSearchQueryDsl ast - 'john group:(eng or "marketing org") -group:"dashboards team" 1`] = ` Object { "bool": Object { "must": Array [ @@ -160,7 +160,7 @@ Object { "must_not": Array [ Object { "match_phrase": Object { - "group": "kibana team", + "group": "dashboards team", }, }, ], @@ -168,7 +168,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - 'john group:(eng or es) -group:kibana' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - 'john group:(eng or opensearch) -group:dashboards' 1`] = ` Object { "bool": Object { "must": Array [ @@ -181,7 +181,7 @@ Object { "match": Object { "group": Object { "operator": "or", - "query": "eng es", + "query": "eng opensearch", }, }, }, @@ -191,7 +191,7 @@ Object { "match": Object { "group": Object { "operator": "and", - "query": "kibana", + "query": "dashboards", }, }, }, @@ -200,7 +200,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - (name:john OR name:fred) 1`] = ` +exports[`astToOpenSearchQueryDsl ast - (name:john OR name:fred) 1`] = ` Object { "bool": Object { "must": Array [ @@ -243,7 +243,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - (name:john) 1`] = ` +exports[`astToOpenSearchQueryDsl ast - (name:john) 1`] = ` Object { "bool": Object { "must": Array [ @@ -272,7 +272,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - -count<=4 size<5 age>=3 -number>9 1`] = ` +exports[`astToOpenSearchQueryDsl ast - -count<=4 size<5 age>=3 -number>9 1`] = ` Object { "bool": Object { "must": Array [ @@ -311,7 +311,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - count>3 1`] = ` +exports[`astToOpenSearchQueryDsl ast - count>3 1`] = ` Object { "bool": Object { "must": Array [ @@ -327,7 +327,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - date:'2004-03' -date<'2004-03-10' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - date:'2004-03' -date<'2004-03-10' 1`] = ` Object { "bool": Object { "must": Array [ @@ -350,7 +350,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - date>'2004-02' -otherDate>='2004-03-10' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - date>'2004-02' -otherDate>='2004-03-10' 1`] = ` Object { "bool": Object { "must": Array [ @@ -375,7 +375,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - date>='2004-03-22' 1`] = ` +exports[`astToOpenSearchQueryDsl ast - date>='2004-03-22' 1`] = ` Object { "bool": Object { "must": Array [ @@ -391,7 +391,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - name:"First \\"Nickname\\" Last" 1`] = ` +exports[`astToOpenSearchQueryDsl ast - name:"First \\"Nickname\\" Last" 1`] = ` Object { "bool": Object { "must": Array [ @@ -405,7 +405,7 @@ Object { } `; -exports[`astToEsQueryDsl ast - name:john (is:enrolled OR Teacher) 1`] = ` +exports[`astToOpenSearchQueryDsl ast - name:john (is:enrolled OR Teacher) 1`] = ` Object { "bool": Object { "must": Array [ diff --git a/src/components/search_bar/query/__snapshots__/ast_to_opensearch_query_string.test.ts.snap b/src/components/search_bar/query/__snapshots__/ast_to_opensearch_query_string.test.ts.snap new file mode 100644 index 0000000000..e1f95b9f63 --- /dev/null +++ b/src/components/search_bar/query/__snapshots__/ast_to_opensearch_query_string.test.ts.snap @@ -0,0 +1,25 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`astToOpenSearchQueryString ast - '*' 1`] = `"*"`; + +exports[`astToOpenSearchQueryString ast - '-group:opensearch group:dashboards -group:beats group:logstash' 1`] = `"-group:opensearch +group:dashboards -group:beats +group:logstash"`; + +exports[`astToOpenSearchQueryString ast - 'is:online group:dashboards john' 1`] = `"+online:true +group:dashboards +john"`; + +exports[`astToOpenSearchQueryString ast - 'john -doe is:online group:eng group:opensearch -group:dashboards -is:active' 1`] = `"+john -doe +online:true +group:eng +group:opensearch -group:dashboards +active:false"`; + +exports[`astToOpenSearchQueryString ast - 'john -sales' 1`] = `"+john -sales"`; + +exports[`astToOpenSearchQueryString ast - 'john group:(eng or "marketing org") -group:"dashboards team" 1`] = `"+john +(group:eng OR group:\\"marketing org\\") -group:\\"dashboards team\\""`; + +exports[`astToOpenSearchQueryString ast - 'john group:(eng or opensearch) -group:dashboards' 1`] = `"+john +(group:eng OR group:opensearch) -group:dashboards"`; + +exports[`astToOpenSearchQueryString ast - -count<=4 size<5 age>=3 -number>9 1`] = `"-count:<=4 +size:<5 +age:>=3 -number:>9"`; + +exports[`astToOpenSearchQueryString ast - count>3 1`] = `"+count:>3"`; + +exports[`astToOpenSearchQueryString ast - date:'2004-03' -date<'2004-03-10' 1`] = `"+date:(>=2004-03 AND <2004-04) -date:<2004-03-10"`; + +exports[`astToOpenSearchQueryString ast - date>'2004-02' -otherDate>='2004-03-10' 1`] = `"+date:>=2004-03 -date:>=2004-03-10"`; + +exports[`astToOpenSearchQueryString ast - date>='2004-03-22' 1`] = `"+date:>=2004-03-22"`; diff --git a/src/components/search_bar/query/ast_to_es_query_dsl.test.ts b/src/components/search_bar/query/ast_to_opensearch_query_dsl.test.ts similarity index 72% rename from src/components/search_bar/query/ast_to_es_query_dsl.test.ts rename to src/components/search_bar/query/ast_to_opensearch_query_dsl.test.ts index 0a6ce587b2..acf5d6d4b5 100644 --- a/src/components/search_bar/query/ast_to_es_query_dsl.test.ts +++ b/src/components/search_bar/query/ast_to_opensearch_query_dsl.test.ts @@ -32,26 +32,26 @@ import { AST } from './ast'; import moment from 'moment/moment'; import { dateValue } from './date_value'; import { Granularity } from './date_format'; -import { astToEsQueryDsl } from './ast_to_es_query_dsl'; +import { astToOpenSearchQueryDsl } from './ast_to_opensearch_query_dsl'; -describe('astToEsQueryDsl', () => { +describe('astToOpenSearchQueryDsl', () => { test("ast - ''", () => { - const query = astToEsQueryDsl(AST.create([])); + const query = astToOpenSearchQueryDsl(AST.create([])); expect(query).toMatchSnapshot(); }); test("ast - 'john -sales'", () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([AST.Term.must('john'), AST.Term.mustNot('sales')]) ); expect(query).toMatchSnapshot(); }); - test("ast - '-group:es group:kibana -group:beats group:logstash'", () => { - const query = astToEsQueryDsl( + test("ast - '-group:opensearch group:dashboards -group:beats group:logstash'", () => { + const query = astToOpenSearchQueryDsl( AST.create([ - AST.Field.mustNot.eq('group', 'es'), - AST.Field.must.eq('group', 'kibana'), + AST.Field.mustNot.eq('group', 'opensearch'), + AST.Field.must.eq('group', 'dashboards'), AST.Field.mustNot.eq('group', 'beats'), AST.Field.must.eq('group', 'logstash'), ]) @@ -59,61 +59,63 @@ describe('astToEsQueryDsl', () => { expect(query).toMatchSnapshot(); }); - test("ast - 'is:online group:kibana john'", () => { - const query = astToEsQueryDsl( + test("ast - 'is:online group:dashboards john'", () => { + const query = astToOpenSearchQueryDsl( AST.create([ AST.Is.must('online'), - AST.Field.must.eq('group', 'kibana'), + AST.Field.must.eq('group', 'dashboards'), AST.Term.must('john'), ]) ); expect(query).toMatchSnapshot(); }); - test("ast - 'john -doe is:online group:eng group:es -group:kibana -is:active'", () => { - const query = astToEsQueryDsl( + test("ast - 'john -doe is:online group:eng group:opensearch -group:dashboards -is:active'", () => { + const query = astToOpenSearchQueryDsl( AST.create([ AST.Term.must('john'), AST.Term.mustNot('doe'), AST.Is.must('online'), AST.Field.must.eq('group', 'eng'), - AST.Field.must.eq('group', 'es'), - AST.Field.mustNot.eq('group', 'kibana'), + AST.Field.must.eq('group', 'opensearch'), + AST.Field.mustNot.eq('group', 'dashboards'), AST.Is.mustNot('active'), ]) ); expect(query).toMatchSnapshot(); }); - test("ast - 'john group:(eng or es) -group:kibana'", () => { - const query = astToEsQueryDsl( + test("ast - 'john group:(eng or opensearch) -group:dashboards'", () => { + const query = astToOpenSearchQueryDsl( AST.create([ AST.Term.must('john'), - AST.Field.must.eq('group', ['eng', 'es']), - AST.Field.mustNot.eq('group', 'kibana'), + AST.Field.must.eq('group', ['eng', 'opensearch']), + AST.Field.mustNot.eq('group', 'dashboards'), ]) ); expect(query).toMatchSnapshot(); }); - test('ast - \'john group:(eng or "marketing org") -group:"kibana team"', () => { - const query = astToEsQueryDsl( + test('ast - \'john group:(eng or "marketing org") -group:"dashboards team"', () => { + const query = astToOpenSearchQueryDsl( AST.create([ AST.Term.must('john'), AST.Field.must.eq('group', ['eng', 'marketing org']), - AST.Field.mustNot.eq('group', 'kibana team'), + AST.Field.mustNot.eq('group', 'dashboards team'), ]) ); expect(query).toMatchSnapshot(); }); test('ast - count>3', () => { - const query = astToEsQueryDsl(AST.create([AST.Field.must.gt('count', 3)])); + const query = astToOpenSearchQueryDsl( + AST.create([AST.Field.must.gt('count', 3)]) + ); expect(query).toMatchSnapshot(); }); test('ast - -count<=4 size<5 age>=3 -number>9', () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([ AST.Field.mustNot.lte('count', 4), AST.Field.must.lt('size', 5), @@ -125,7 +127,7 @@ describe('astToEsQueryDsl', () => { }); test("ast - date>='2004-03-22'", () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([ AST.Field.must.gte( 'date', @@ -137,7 +139,7 @@ describe('astToEsQueryDsl', () => { }); test("ast - date:'2004-03' -date<'2004-03-10'", () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([ AST.Field.must.eq( 'date', @@ -153,7 +155,7 @@ describe('astToEsQueryDsl', () => { }); test("ast - date>'2004-02' -otherDate>='2004-03-10'", () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([ AST.Field.must.gt( 'date', @@ -169,14 +171,14 @@ describe('astToEsQueryDsl', () => { }); test('ast - (name:john)', () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([AST.Group.must([AST.Field.must.eq('name', 'john')])]) ); expect(query).toMatchSnapshot(); }); test('ast - (name:john OR name:fred)', () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([ AST.Group.must([ AST.Field.must.eq('name', 'john'), @@ -188,7 +190,7 @@ describe('astToEsQueryDsl', () => { }); test('ast - name:john (is:enrolled OR Teacher)', () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([ AST.Field.must.eq('name', 'john'), AST.Group.must([AST.Is.must('enrolled'), AST.Term.must('Teacher')]), @@ -198,7 +200,7 @@ describe('astToEsQueryDsl', () => { }); test('ast - name:"First \\"Nickname\\" Last"', () => { - const query = astToEsQueryDsl( + const query = astToOpenSearchQueryDsl( AST.create([AST.Field.must.eq('name', 'First "Nickname" Last')]) ); expect(query).toMatchSnapshot(); diff --git a/src/components/search_bar/query/ast_to_es_query_dsl.ts b/src/components/search_bar/query/ast_to_opensearch_query_dsl.ts similarity index 96% rename from src/components/search_bar/query/ast_to_es_query_dsl.ts rename to src/components/search_bar/query/ast_to_opensearch_query_dsl.ts index 04084c5ea6..0c130bd4ed 100644 --- a/src/components/search_bar/query/ast_to_es_query_dsl.ts +++ b/src/components/search_bar/query/ast_to_opensearch_query_dsl.ts @@ -294,7 +294,7 @@ const collectFields = (clauses: FieldClause[]) => { ); }; -const clausesToEsQueryDsl = ( +const clausesToOpenSearchQueryDsl = ( { fields, terms, @@ -355,7 +355,10 @@ const EMPTY_FIELDS: FieldsQuery = { mustNot: { and: {}, or: {} }, }; -export const astToEsQueryDsl = (ast: _AST, options = {}): QueryContainer => { +export const astToOpenSearchQueryDsl = ( + ast: _AST, + options = {} +): QueryContainer => { if (ast.clauses.length === 0) { return { match_all: {} }; } @@ -364,7 +367,10 @@ export const astToEsQueryDsl = (ast: _AST, options = {}): QueryContainer => { const fields = collectFields(ast.getFieldClauses()); const is = ast.getIsClauses(); - const matchesBool = clausesToEsQueryDsl({ terms, fields, is }, options); + const matchesBool = clausesToOpenSearchQueryDsl( + { terms, fields, is }, + options + ); const hasTopMatches = Object.keys(matchesBool).length > 0; const groupClauses = ast.getGroupClauses(); @@ -378,7 +384,7 @@ export const astToEsQueryDsl = (ast: _AST, options = {}): QueryContainer => { const clauses = groupClause.value.reduce((clauses, clause) => { if (AST.Term.isInstance(clause)) { clauses.push( - clausesToEsQueryDsl({ + clausesToOpenSearchQueryDsl({ terms: collectTerms([clause]), fields: EMPTY_FIELDS, is: [], @@ -386,7 +392,7 @@ export const astToEsQueryDsl = (ast: _AST, options = {}): QueryContainer => { ); } else if (AST.Field.isInstance(clause)) { clauses.push( - clausesToEsQueryDsl({ + clausesToOpenSearchQueryDsl({ terms: EMPTY_TERMS, fields: collectFields([clause]), is: [], @@ -394,7 +400,7 @@ export const astToEsQueryDsl = (ast: _AST, options = {}): QueryContainer => { ); } else if (AST.Is.isInstance(clause)) { clauses.push( - clausesToEsQueryDsl({ + clausesToOpenSearchQueryDsl({ terms: EMPTY_TERMS, fields: EMPTY_FIELDS, is: [clause], @@ -421,3 +427,7 @@ export const astToEsQueryDsl = (ast: _AST, options = {}): QueryContainer => { }; } }; + +// @deprecated Use `astToOpenSearchQueryDsl` instead +export const astToEsQueryDsl = (ast: _AST, options = {}): QueryContainer => + astToOpenSearchQueryDsl(ast, options); diff --git a/src/components/search_bar/query/ast_to_es_query_string.test.ts b/src/components/search_bar/query/ast_to_opensearch_query_string.test.ts similarity index 73% rename from src/components/search_bar/query/ast_to_es_query_string.test.ts rename to src/components/search_bar/query/ast_to_opensearch_query_string.test.ts index 9c3f35d278..d884e2625f 100644 --- a/src/components/search_bar/query/ast_to_es_query_string.test.ts +++ b/src/components/search_bar/query/ast_to_opensearch_query_string.test.ts @@ -32,26 +32,26 @@ import { AST } from './ast'; import moment from 'moment/moment'; import { dateValue } from './date_value'; import { Granularity } from './date_format'; -import { astToEsQueryString } from './ast_to_es_query_string'; +import { astToOpenSearchQueryString } from './ast_to_opensearch_query_string'; -describe('astToEsQueryString', () => { +describe('astToOpenSearchQueryString', () => { test("ast - '*'", () => { - const query = astToEsQueryString(AST.create([])); + const query = astToOpenSearchQueryString(AST.create([])); expect(query).toMatchSnapshot(); }); test("ast - 'john -sales'", () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([AST.Term.must('john'), AST.Term.mustNot('sales')]) ); expect(query).toMatchSnapshot(); }); - test("ast - '-group:es group:kibana -group:beats group:logstash'", () => { - const query = astToEsQueryString( + test("ast - '-group:opensearch group:dashboards -group:beats group:logstash'", () => { + const query = astToOpenSearchQueryString( AST.create([ - AST.Field.mustNot.eq('group', 'es'), - AST.Field.must.eq('group', 'kibana'), + AST.Field.mustNot.eq('group', 'opensearch'), + AST.Field.must.eq('group', 'dashboards'), AST.Field.mustNot.eq('group', 'beats'), AST.Field.must.eq('group', 'logstash'), ]) @@ -59,63 +59,63 @@ describe('astToEsQueryString', () => { expect(query).toMatchSnapshot(); }); - test("ast - 'is:online group:kibana john'", () => { - const query = astToEsQueryString( + test("ast - 'is:online group:dashboards john'", () => { + const query = astToOpenSearchQueryString( AST.create([ AST.Is.must('online'), - AST.Field.must.eq('group', 'kibana'), + AST.Field.must.eq('group', 'dashboards'), AST.Term.must('john'), ]) ); expect(query).toMatchSnapshot(); }); - test("ast - 'john -doe is:online group:eng group:es -group:kibana -is:active'", () => { - const query = astToEsQueryString( + test("ast - 'john -doe is:online group:eng group:opensearch -group:dashboards -is:active'", () => { + const query = astToOpenSearchQueryString( AST.create([ AST.Term.must('john'), AST.Term.mustNot('doe'), AST.Is.must('online'), AST.Field.must.eq('group', 'eng'), - AST.Field.must.eq('group', 'es'), - AST.Field.mustNot.eq('group', 'kibana'), + AST.Field.must.eq('group', 'opensearch'), + AST.Field.mustNot.eq('group', 'dashboards'), AST.Is.mustNot('active'), ]) ); expect(query).toMatchSnapshot(); }); - test("ast - 'john group:(eng or es) -group:kibana'", () => { - const query = astToEsQueryString( + test("ast - 'john group:(eng or opensearch) -group:dashboards'", () => { + const query = astToOpenSearchQueryString( AST.create([ AST.Term.must('john'), - AST.Field.must.eq('group', ['eng', 'es']), - AST.Field.mustNot.eq('group', 'kibana'), + AST.Field.must.eq('group', ['eng', 'opensearch']), + AST.Field.mustNot.eq('group', 'dashboards'), ]) ); expect(query).toMatchSnapshot(); }); - test('ast - \'john group:(eng or "marketing org") -group:"kibana team"', () => { - const query = astToEsQueryString( + test('ast - \'john group:(eng or "marketing org") -group:"dashboards team"', () => { + const query = astToOpenSearchQueryString( AST.create([ AST.Term.must('john'), AST.Field.must.eq('group', ['eng', 'marketing org']), - AST.Field.mustNot.eq('group', 'kibana team'), + AST.Field.mustNot.eq('group', 'dashboards team'), ]) ); expect(query).toMatchSnapshot(); }); test('ast - count>3', () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([AST.Field.must.gt('count', 3)]) ); expect(query).toMatchSnapshot(); }); test('ast - -count<=4 size<5 age>=3 -number>9', () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([ AST.Field.mustNot.lte('count', 4), AST.Field.must.lt('size', 5), @@ -127,7 +127,7 @@ describe('astToEsQueryString', () => { }); test("ast - date>='2004-03-22'", () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([ AST.Field.must.gte( 'date', @@ -139,7 +139,7 @@ describe('astToEsQueryString', () => { }); test("ast - date:'2004-03' -date<'2004-03-10'", () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([ AST.Field.must.eq( 'date', @@ -155,7 +155,7 @@ describe('astToEsQueryString', () => { }); test("ast - date>'2004-02' -otherDate>='2004-03-10'", () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([ AST.Field.must.gt( 'date', @@ -171,7 +171,7 @@ describe('astToEsQueryString', () => { }); test('ast - (name:john OR name:fred)', () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([ AST.Group.must([ AST.Field.must.eq('name', 'john'), @@ -183,7 +183,7 @@ describe('astToEsQueryString', () => { }); test('ast - name:john (is:enrolled OR Teacher)', () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([ AST.Field.must.eq('name', 'john'), AST.Group.must([AST.Is.must('enrolled'), AST.Term.must('Teacher')]), @@ -193,7 +193,7 @@ describe('astToEsQueryString', () => { }); test('ast - name:"First \\"Nickname\\" Last"', () => { - const query = astToEsQueryString( + const query = astToOpenSearchQueryString( AST.create([AST.Field.must.eq('name', 'First "Nickname" Last')]) ); expect(query).toBe('+name:"First \\"Nickname\\" Last"'); diff --git a/src/components/search_bar/query/ast_to_es_query_string.ts b/src/components/search_bar/query/ast_to_opensearch_query_string.ts similarity index 97% rename from src/components/search_bar/query/ast_to_es_query_string.ts rename to src/components/search_bar/query/ast_to_opensearch_query_string.ts index f8ea5542cf..09d30f94f4 100644 --- a/src/components/search_bar/query/ast_to_es_query_string.ts +++ b/src/components/search_bar/query/ast_to_opensearch_query_string.ts @@ -257,10 +257,15 @@ function emitClause(clause: Clause, isGroupMember = false) { throw new Error(`unknown clause type [${JSON.stringify(clause)}]`); } -export const astToEsQueryString = (ast: _AST) => { +export const astToOpenSearchQueryString = (ast: _AST) => { if (ast.clauses.length === 0) { return '*'; } return ast.clauses.map((clause) => emitClause(clause)).join(' '); }; + +// @deprecated Use `astToOpenSearchQueryString` instead +export const astToEsQueryString = (ast: _AST) => { + return astToOpenSearchQueryString(ast); +}; diff --git a/src/components/search_bar/query/query.ts b/src/components/search_bar/query/query.ts index 8b9faf4d30..8bfd047f41 100644 --- a/src/components/search_bar/query/query.ts +++ b/src/components/search_bar/query/query.ts @@ -31,8 +31,8 @@ import { defaultSyntax, ParseOptions, Syntax } from './default_syntax'; import { executeAst } from './execute_ast'; import { isNil, isString } from '../../../services/predicate'; -import { astToEsQueryDsl } from './ast_to_es_query_dsl'; -import { astToEsQueryString } from './ast_to_es_query_string'; +import { astToOpenSearchQueryDsl } from './ast_to_opensearch_query_dsl'; +import { astToOpenSearchQueryString } from './ast_to_opensearch_query_string'; import { _AST, AST, Clause, Operator, OperatorType, Value } from './ast'; /** @@ -67,7 +67,7 @@ export class Query { return AST.Field.isInstance(clause); } - // This ought to be `private`, but Kibana has some customizations that rely on access to this field + // This ought to be `private`, but OSD has some customizations that rely on access to this field public ast: _AST; public text: string; private syntax: Syntax; @@ -159,7 +159,7 @@ export class Query { /** * Executes this query over the given iterable item and returns - * an new array of all items that matched this query. Options: + * a new array of all items that matched this query. Options: * * defaultFields: string[] * @@ -168,10 +168,10 @@ export class Query { * * isClauseMatcher?: (record: any, flag: string, applied: boolean, explain?: []) => boolean * - * By default the 'is' clauses will try to match against boolean fields - where the flag of the clause + * By default, the 'is' clauses will try to match against boolean fields - where the flag of the clause * indicates the field name. You can change this behaviour by providing this matcher function for the * is clause. For example, if the object has a `tags` field, one can create a matcher that checks if - * an object has a specific tag (e.g. "is:marketing", "is:kitchen", etc..) + * an object has a specific tag (e.g. "is:marketing", "is:kitchen", etc.) * * explain?: boolean * @@ -185,38 +185,48 @@ export class Query { } /** - * Builds and returns an Elasticsearch query out this query. Options: + * Builds and returns an OpenSearch query out this query. Options: * * defaultFields?: string[] * * An array of field names to match the default clauses against. When not specified, the query * will pick up all the string fields of each record and try to match against those. * - * isToQuery?: (flag: string, on: boolean) => Object (elasticsearch query object) + * isToQuery?: (flag: string, on: boolean) => Object (OpenSearch query object) * * By default, "is" clauses will be translated to a term query where the flag is the field * and the "on" value will be the value of the field. This function lets you change this default * translation and provide your own custom one. * - * termValuesToQuery?: (values: string[]) => Object (elasticsearch query object) + * termValuesToQuery?: (values: string[]) => Object (OpenSearch query object) * * By default, "term" clauses will be translated to a "simple_query_string" query where all * the values serve as terms in the query string. This function lets you change this default * translation and provide your own custom one. * - * fieldValuesToAndQuery?: (field: string, values: string[]) => Object (elasticsearch query object) + * fieldValuesToAndQuery?: (field: string, values: string[]) => Object (OpenSearch query object) * * By default, "field" clauses will be translated to a match query where all the values serve as - * terms in the query(the operator is AND). This function lets you change this default translation + * terms in the query (the operator is AND). This function lets you change this default translation * and provide your own custom one. */ - static toESQuery(query: string | Query, options = {}) { + static toOpenSearchQuery(query: string | Query, options = {}) { const q = isString(query) ? Query.parse(query) : query; - return astToEsQueryDsl(q.ast, options); + return astToOpenSearchQueryDsl(q.ast, options); } - static toESQueryString(query: string | Query) { + static toOpenSearchQueryString(query: string | Query) { const q = isString(query) ? Query.parse(query) : query; - return astToEsQueryString(q.ast); + return astToOpenSearchQueryString(q.ast); + } + + // @deprecated Use `toOpenSearchQuery` instead + static toESQuery(query: string | Query, options = {}) { + return Query.toOpenSearchQuery(query, options); + } + + // @deprecated Use `toOpenSearchQueryString` instead + static toESQueryString(query: string | Query) { + return Query.toOpenSearchQueryString(query); } }