Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Meta] Global Search #57576

Closed
ryankeairns opened this issue Feb 13, 2020 · 7 comments
Closed

[Meta] Global Search #57576

ryankeairns opened this issue Feb 13, 2020 · 7 comments
Labels
design Meta REASSIGN from Team:Core UI Deprecated label for old Core UI team

Comments

@ryankeairns
Copy link
Contributor

ryankeairns commented Feb 13, 2020

Summary

The Kibana design team has proposed adding a global search bar that would assist users in navigating the growing number of applications and objects. This would augment, or be an alternative to, the main Kibana navigation UI.

This feature could be expanded to accommodate additional capabilities such as shortcuts to create new objects, user-defined shortcuts, and more. However, the initial focus is improved navigation.

Target outcome

Users can quickly navigate Kibana applications and saved objects without having to repeatedly click through navigation.

Requirements

MVP - Search as navigation - #58049

Prerequisite: URL service - #25247

  1. Search input in header (see mockup ; see prototype)
  2. Shortcut to open/focus search (e.g. Command/Windows + K)
  3. Return registered apps and saved objects
    • Search needs to be able to return applications by name
      “Dashboards” and “Visualizations”...etc
    • Search needs to be able to return saved objects directly.
      • Individual visualizations
      • Individual dashboards
      • Saved searches
      • SIEM Timelines
      • Canvas workpads
  4. Display recent items - moved out of MVP - further discussion here

Future considerations (to be further prioritized post-MVP)

  • Feature results provider: [GS] Feature results provider #72680

  • Search across multiple Spaces: [GS] Search across Spaces #67977

  • Scoped results / search syntax: [GS] Advanced search syntax to fine tune results returned #74290

  • Entity results provider: [GS] Entity results provider #74283

  • Additional search content; also building on the 'syntax' concept

    • Spaces
    • Search for objects that use a specific index and/or field
    • Search by object author
    • Search by object type
    • Search by tag (i.e. category)
    • Thumbnail previews in results
    • Group results by type
    • Users
    • Roles
  • Change the scope of search based upon context.

  • Contextual, app-based commands tied to key commands

    • Each application or service in Kibana would be able to register commands to this bar and users will be able to define key commands to actions - Create a command palette with hotkeys for Kibana #15019
    • e.g. element:bar loads a bar chart onto a Canvas workpad
    • Further, user could assign the b key as a shortcut for element:bar
  • Pinning (a suggestion; UX unclear; blocked until proper personalization)

  • Enhanced results using Pulse telemetry data

    • For example, recent items could be augmented using Pulse telemetry by adding more than just the last X things you visited... also things you visited most in the last week, etc.
  • Advanced search/Results page (i.e. advanced search; robust filtering with App Search; see mockup)

  • Natural language processing

    • Enhance search to handle natural language style questions/requests for improved onboarding (e.g. "How do I...")

Phased approach

7.10

  • Deliver initial Global Search ‘MVP’
    • Apps
    • Saved objects
    • Recently viewed (initial results)
    • Data source registry (cross-platform solution; plugin authors register content)

7.X/8.X

  • See future considerations above; to be prioritized

Prototypes and mockups

Figma prototype

https://www.figma.com/proto/EG8LewmUTK2la66aXfkOKE/Kibana-Header?node-id=484%3A410&viewport=-1025%2C-871%2C0.5&scaling=min-zoom

Search input mockup

Screenshot 2020-02-14 14 59 31

Results page (future)

Screenshot 2020-02-12 17 12 39

@ryankeairns ryankeairns added the REASSIGN from Team:Core UI Deprecated label for old Core UI team label Feb 13, 2020
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-core-ui (Team:Core UI)

@ryankeairns ryankeairns changed the title [Global Search] [Meta] Search as navigation [Meta] Global Search Feb 13, 2020
@timroes
Copy link
Contributor

timroes commented Feb 21, 2020

@ryankeairns @myasonik Does this issue supersede #15019? (In which case I think that other issue could be closed).

@ryankeairns
Copy link
Contributor Author

@timroes functionality like this (registering commands per app) is captured under the 'Long term considerations' section. I've added a link to #15019 , thanks for calling this out.

@pgayvallet
Copy link
Contributor

Include registered apps and saved objects

The include registered apps part seems to be the biggest issue for the MVP atm:

Currently in NP, applications are only registered from the client-side, and the server got no knowledge of them, meaning that the server cannot 'search' for them.

For this specific use-case, we could just 'aggregate' SO results from the server with application results 'generated' from the client, however as we want to be able to use the functionality in https://github.com/elastic/dev/issues/1370, this doesn't seems like an option.

Not sure what the best approach is going to be to solve this. Thinking out loud:

Moving app registration to server-side

I don't think we want to go back to the 'uiExport' nightmare, so I'd say this is insta-excluded

Duplicating registration on both client and server-side

Plugins would have to register applications metadata on the server-side in addition to the client side. That would include at least id,description and url to be able to generate the search result. That do seems like a poor developer experience, but is probably the easiest approach in the short term

Use AST at build time to parse the calls to registerApp on the client side code and generate a file usable from the server

Better developer experience, but way more complicated that the previous option, and adds an additional build step.

Ignore the chatOps requirement

And go for the initial proposal to let the client side performs the applications search. Just not futur proof, would just postpone the need to find another solution

@joshdover any other option I would have missed?

@joshdover
Copy link
Contributor

For posterity's sake, we have decided to go with the "Ignore the chatops requirement" option for the time being.

It should be fairly negligible difference effort of doing it now vs. later, so we are opting for later in order to keep the MVP of Global Search unblocked.

@joshdover joshdover mentioned this issue Mar 27, 2020
4 tasks
@pgayvallet
Copy link
Contributor

FYI, I created an RFC for the initial implementation of core globalSearch API: #64284.

@alexfrancoeur
Copy link

As discussed with @ryankeairns , closing to focus on the next phase of search #83354

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
design Meta REASSIGN from Team:Core UI Deprecated label for old Core UI team
Projects
None yet
Development

No branches or pull requests

6 participants