diff --git a/src/core/server/saved_objects/service/lib/filter_utils.ts b/src/core/server/saved_objects/service/lib/filter_utils.ts index be36807f0d02b..506007efe1ede 100644 --- a/src/core/server/saved_objects/service/lib/filter_utils.ts +++ b/src/core/server/saved_objects/service/lib/filter_utils.ts @@ -202,16 +202,16 @@ export const hasFilterKeyError = ( ) { return `This key '${key}' does NOT match the filter proposition SavedObjectType.attributes.key`; } - if ( - (keySplit.length === 2 && !fieldDefined(indexMapping, keySplit[1])) || - (keySplit.length > 2 && - !fieldDefined( - indexMapping, - `${keySplit[0]}.${keySplit.slice(2, keySplit.length).join('.')}` - )) - ) { - return `This key '${key}' does NOT exist in ${types.join()} saved object index patterns`; - } + // if ( + // (keySplit.length === 2 && !fieldDefined(indexMapping, keySplit[1])) || + // (keySplit.length > 2 && + // !fieldDefined( + // indexMapping, + // `${keySplit[0]}.${keySplit.slice(2, keySplit.length).join('.')}` + // )) + // ) { + // return `This key '${key}' does NOT exist in ${types.join()} saved object index patterns`; + // } } return null; }; diff --git a/src/core/server/saved_objects/service/lib/search_dsl/sorting_params.ts b/src/core/server/saved_objects/service/lib/search_dsl/sorting_params.ts index a56cf6462dbe7..e765b00e2bfdb 100644 --- a/src/core/server/saved_objects/service/lib/search_dsl/sorting_params.ts +++ b/src/core/server/saved_objects/service/lib/search_dsl/sorting_params.ts @@ -67,23 +67,23 @@ export function getSortingParams( } const [typeField] = types; - let key = `${typeField}.${sortField}`; - let field = getProperty(mappings, key); - if (!field) { - // type field does not exist, try checking the root properties - key = sortField; - field = getProperty(mappings, sortField); - if (!field) { - throw Boom.badRequest(`Unknown sort field ${sortField}`); - } - } + const key = `${typeField}.${sortField}`; + // let field = getProperty(mappings, key); + // if (!field) { + // // type field does not exist, try checking the root properties + // key = sortField; + // field = getProperty(mappings, sortField); + // if (!field) { + // throw Boom.badRequest(`Unknown sort field ${sortField}`); + // } + // } return { sort: [ { [key]: { order: sortOrder, - unmapped_type: field.type, + // unmapped_type: field.type, }, }, ], diff --git a/x-pack/plugins/alerts/server/saved_objects/mappings.json b/x-pack/plugins/alerts/server/saved_objects/mappings.json index f0c5c28ecaeaf..136dc530aa119 100644 --- a/x-pack/plugins/alerts/server/saved_objects/mappings.json +++ b/x-pack/plugins/alerts/server/saved_objects/mappings.json @@ -47,8 +47,7 @@ } }, "params": { - "enabled": false, - "type": "object" + "type": "flattened" }, "scheduledTaskId": { "type": "keyword" diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/find.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/find.ts index ffe25cfe684ac..641d013a0586e 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/find.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/find.ts @@ -84,5 +84,51 @@ export default function createFindTests({ getService }: FtrProviderContext) { data: [], }); }); + + it('should be able to sort on alert param values', async () => { + await Promise.all([ + createAlert({ params: { strValue: 'b' } }), + createAlert({ params: { strValue: 'c' } }), + createAlert({ params: { strValue: 'a' } }), + ]); + + const response = await supertest.get( + `${getUrlPrefix(Spaces.space1.id)}/api/alerts/_find?sort_field=params.strValue` + ); + + expect(response.status).to.eql(200); + expect(response.body.total).to.equal(3); + expect(response.body.data[0].params.strValue).to.eql('a'); + expect(response.body.data[1].params.strValue).to.eql('b'); + expect(response.body.data[2].params.strValue).to.eql('c'); + }); + + it('should be able to filter on alert param values', async () => { + await Promise.all([ + createAlert({ params: { strValue: 'my a' } }), + createAlert({ params: { strValue: 'my b' } }), + createAlert({ params: { strValue: 'my c' } }), + ]); + + const response = await supertest.get( + `${getUrlPrefix( + Spaces.space1.id + )}/api/alerts/_find?filter=alert.attributes.params.strValue:"my b"` + ); + + expect(response.status).to.eql(200); + expect(response.body.total).to.equal(1); + expect(response.body.data[0].params.strValue).to.eql('my b'); + }); + + async function createAlert(overwrites = {}) { + const { body: createdAlert } = await supertest + .post(`${getUrlPrefix(Spaces.space1.id)}/api/alerts/alert`) + .set('kbn-xsrf', 'foo') + .send(getTestAlertData(overwrites)) + .expect(200); + objectRemover.add(Spaces.space1.id, createdAlert.id, 'alert', 'alerts'); + return createdAlert; + } }); }