4ddcd1d2a6
* [APM] Fix anomalies not showing up on transaction charts * Added API tests to check transaction groups charts for anomaly data * Improve test names and assertions from PR feedback * Updated the transaction groups chart API to make `environment` a required param while making `uiFilters` optional * updates the basic API tests for transaction_groups/charts with the required `environment` param * makes uiFIltersES default to [] on core setup and removes SetupUIFilters type * fixes vertical shade * - replaces uiFiltersES with esFilter & uiFilters and cleans up related code around these - deduplicates the required environment in the transaction_groups/charts API * updates basic apm_api_integration tests * pr feedback * updates api test snapshots with correct anomaly data * removed environment query param from useTransactionCharts and ensures it's included in uiFilters returned from useUrlParams Co-authored-by: Oliver Gupte <olivergupte@gmail.com>
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License;
|
|
* you may not use this file except in compliance with the Elastic License.
|
|
*/
|
|
import { omit } from 'lodash';
|
|
import { Setup, SetupTimeRange } from '../../server/lib/helpers/setup_request';
|
|
import {
|
|
TRANSACTION_NAME,
|
|
PARENT_ID,
|
|
TRANSACTION_ROOT,
|
|
} from '../../common/elasticsearch_fieldnames';
|
|
import { Options } from '../../server/lib/transaction_groups/fetcher';
|
|
import { getTransactionsProjection } from './transactions';
|
|
import { mergeProjection } from './util/merge_projection';
|
|
|
|
export function getTransactionGroupsProjection({
|
|
setup,
|
|
options,
|
|
}: {
|
|
setup: Setup & SetupTimeRange;
|
|
options: Options;
|
|
}) {
|
|
const transactionsProjection = getTransactionsProjection({
|
|
setup,
|
|
...(omit(options, 'type') as Omit<typeof options, 'type'>),
|
|
});
|
|
|
|
if (options.type === 'top_traces') {
|
|
if (options.searchAggregatedTransactions) {
|
|
transactionsProjection.body.query.bool.filter.push({
|
|
term: {
|
|
[TRANSACTION_ROOT]: true,
|
|
},
|
|
});
|
|
} else {
|
|
// @ts-expect-error: Property 'must_not' does not exist on type '{ filter: ESFilter[]; }'.
|
|
transactionsProjection.body.query.bool.must_not = [
|
|
{
|
|
exists: {
|
|
field: PARENT_ID,
|
|
},
|
|
},
|
|
];
|
|
}
|
|
}
|
|
|
|
return mergeProjection(transactionsProjection, {
|
|
body: {
|
|
aggs: {
|
|
transactions: {
|
|
terms: {
|
|
field: TRANSACTION_NAME,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}
|