Skip to content

Commit

Permalink
[ML] Fix overall stats for saved search on the Data Visualizer page (#…
Browse files Browse the repository at this point in the history
…57312) (#57333)

* [ML] fix overall stats fetch with a saved search

* [ML] refactor
  • Loading branch information
darnautov authored Feb 11, 2020
1 parent b58b1d2 commit aa6d34c
Showing 1 changed file with 42 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {
esQuery,
esKuery,
} from '../../../../../../../../src/plugins/data/public';
import { SavedSearchSavedObject } from '../../../../common/types/kibana';
import { NavigationMenu } from '../../components/navigation_menu';
import { ML_JOB_FIELD_TYPES } from '../../../../common/constants/field_types';
import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search';
Expand Down Expand Up @@ -119,9 +120,6 @@ export const Page: FC = () => {
}, [globalState?.refreshInterval?.pause, globalState?.refreshInterval?.value]);

const [lastRefresh, setLastRefresh] = useState(0);
useEffect(() => {
loadOverallStats();
}, [lastRefresh]);

useEffect(() => {
if (currentIndexPattern.timeFieldName !== undefined) {
Expand Down Expand Up @@ -159,9 +157,15 @@ export const Page: FC = () => {
mlNodesAvailable() &&
currentIndexPattern.timeFieldName !== undefined;

const [searchString, setSearchString] = useState(defaults.searchString);
const [searchQuery, setSearchQuery] = useState(defaults.searchQuery);
const [searchQueryLanguage, setSearchQueryLanguage] = useState(defaults.searchQueryLanguage);
const {
searchQuery: initSearchQuery,
searchString: initSearchString,
queryLanguage: initQueryLanguage,
} = extractSearchData(currentSavedSearch);

const [searchString, setSearchString] = useState(initSearchString);
const [searchQuery, setSearchQuery] = useState(initSearchQuery);
const [searchQueryLanguage] = useState(initQueryLanguage);
const [samplerShardSize, setSamplerShardSize] = useState(defaults.samplerShardSize);

// TODO - type overallStats and stats
Expand Down Expand Up @@ -208,30 +212,9 @@ export const Page: FC = () => {
};
});

useEffect(() => {
// Check for a saved search being passed in.
if (currentSavedSearch !== null) {
const { query } = getQueryFromSavedSearch(currentSavedSearch);
const queryLanguage = query.language as SEARCH_QUERY_LANGUAGE;
const qryString = query.query;
let qry;
if (queryLanguage === SEARCH_QUERY_LANGUAGE.KUERY) {
const ast = esKuery.fromKueryExpression(qryString);
qry = esKuery.toElasticsearchQuery(ast, currentIndexPattern);
} else {
qry = esQuery.luceneStringToDsl(qryString);
esQuery.decorateQuery(qry, kibanaConfig.get('query:queryString:options'));
}

setSearchQuery(qry);
setSearchString(qryString);
setSearchQueryLanguage(queryLanguage);
}
}, []);

useEffect(() => {
loadOverallStats();
}, [searchQuery, samplerShardSize]);
}, [searchQuery, samplerShardSize, lastRefresh]);

useEffect(() => {
createMetricCards();
Expand All @@ -254,6 +237,37 @@ export const Page: FC = () => {
createNonMetricCards();
}, [showAllNonMetrics, nonMetricShowFieldType, nonMetricFieldQuery]);

/**
* Extract query data from the saved search object.
*/
function extractSearchData(savedSearch: SavedSearchSavedObject | null) {
if (!savedSearch) {
return {
searchQuery: defaults.searchQuery,
searchString: defaults.searchString,
queryLanguage: defaults.searchQueryLanguage,
};
}

const { query } = getQueryFromSavedSearch(savedSearch);
const queryLanguage = query.language as SEARCH_QUERY_LANGUAGE;
const qryString = query.query;
let qry;
if (queryLanguage === SEARCH_QUERY_LANGUAGE.KUERY) {
const ast = esKuery.fromKueryExpression(qryString);
qry = esKuery.toElasticsearchQuery(ast, currentIndexPattern);
} else {
qry = esQuery.luceneStringToDsl(qryString);
esQuery.decorateQuery(qry, kibanaConfig.get('query:queryString:options'));
}

return {
searchQuery: qry,
searchString: qryString,
queryLanguage,
};
}

async function loadOverallStats() {
const tf = timefilter as any;
let earliest;
Expand Down

0 comments on commit aa6d34c

Please sign in to comment.