Data Explorer is an integral enhancement of the OpenSearch Dashboards that seeks to consolidate various data exploration facets into a unified platform. Built to provide an efficient data exploration experience, Data Explorer merges capabilities of different applications like Discover, Visbuilder, and Event Analytics into a singular platform.
- Unified Data Exploration: Data Explorer acts as a consolidated platform for all data exploration tasks, aiming to provide users with a seamless and efficient environment.
- Extensibility: Provides an architecture that allows existing exploration apps to migrate with minimal changes.
- Shared Utilities: Offers components and utilities that can be shared across different views.
Data Explorer, at its core, is a shell for data exploration views. Here's a breakdown of the architecture and how it manages responsibilities:
- Data Source: Acts as the central point for the data source being explored.
- View Registry: Allows apps to register themselves as views and manages their display based on user selection.
- State Management: Provides shared state management and hooks for underlying apps to register their state reducers.
- Shared Utilities: Contains components and utilities that can be reused by various views.
- Metadata Storage: Handles the logic for storing metadata and its retrieval (Saved objects).
- Data Fetching: Manages the logic for fetching data from the data source.
- View specific state management: Handles view-specific state management and hooks into Data Explorer's state management.
- Nav Options & Search/Query Bar: Manages the navigation options, time filter, and search bar.
- View Specific Logic: Contains view-specific rendering and application logic.
- Embeddables: Responsible for registering their embeddables.
Existing applications can migrate their data exploration views to Data Explorer. Such migrations involve:
- Registering the application as a view.
- Using Data Explorer's state management and data source.
- Modifying routes to utilize Data Explorer's routes.
- Adapting the UI to match Data Explorer's panel and canvas components.
Existing routes for each view are expected to redirect to new routes prefixed with /data_explorer
. E.g., existing Discover route will redirect to /data_explorer/discover
.
For an application to be registered as a view within Data Explorer, it needs to adhere to the following data model:
interface ViewDefinition<T = any> {
readonly id: string;
readonly title: string;
readonly ui?: {
defaults: DefaultViewState | (() => DefaultViewState) | (() => Promise<DefaultViewState>);
slice: Slice<T>;
};
readonly Canvas: LazyExoticComponent<(props: ViewProps) => React.ReactElement>;
readonly Panel: LazyExoticComponent<(props: ViewProps) => React.ReactElement>;
readonly Context: LazyExoticComponent<
(props: React.PropsWithChildren<ViewProps>) => React.ReactElement
>;
readonly defaultPath: string;
readonly appExtentions: {
savedObject: {
docTypes: [string];
toListItem: (obj: { id: string; title: string }) => ViewListItem;
};
};
readonly shouldShow?: (state: any) => boolean;
}
Original proposal: opensearch-project#4165