-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[APM] Ability to search tables by specific field #127036
Comments
Pinging @elastic/apm-ui (Team:apm) |
@sqren Just so I understand your suggestion correctly; we would add the ability to filter each of the tables on the Service Overview page? Does this change the current KQL search bar ability in the Overview that allows the user to narrow down all the results on the page to a specific query? I've illustrated how adding a search bar to each of the table would essentially look My main worry is that the user would essentially have to manage many separate search bars if they use them unless we make some logic that clears the input upon reload or similar. On top of that, it seems more prudent to ask ourselves what purpose does the current KQL query bar serve. If you add a specific transaction name in the search bar today, you will get results across all entities (transactions, errors, dependencies) that match that endpoint, so that's already a lot of power. @chrisdistasio @alex-fedotyev Interested in your thoughts here |
i also share a concern over removing kql ability--i expect it is common for customers to search for fields or labels (likely more than by name). i think the complex naming in instances and dependencies serves as a good example of why it might be difficult to leverage naming for search purposes. if we were to consider such a change, i would expect we offer the same flexibility to the customer as we implemented for services inventory page--the ability to easily revert to kql query bad AND the telemetry to allow us visibility into how customers are using this. |
Sorry if I wasn't clear. This issue is not about removing kql bar but adding the ability to easily search (filter) data in tables by specific fields. We can do this and still keep the kql search bar at the very top.
We could do that. But I don't think having an extra kql search bar for each table will add much value since the user already has a kql bar at the very of the page. We could start with just adding a search bar for transactions and error tables. They will both have obvious columns ( |
Thank you for that mockup. That's exactly what I was thinking.
I'm not quite following. The search bar would only filter the table directly below. It won't affect any other components. The inputs will be cleared when navigating away, refreshing etc. We can decide if we also want to clear them when changing time range, or when using the main kql bar.
True, the kql search bar is powerfull but it leaves a lot to be desired in terms of UX. Problems:
|
@elastic/apm-pm what do you think about this? |
This keeps coming up, so now I'm re-opening https://discuss.elastic.co/t/searching-for-apm-services/345599/1 |
Talked through this with @roshan-elastic. I think we can move forward without needing any further product or design input. Moving to ready. |
Hey @sorenlouv - I love your thinking here...adding my feedback so it's not lost:
I think this is my preferred option (c) because of the risks you pointed out of either missing data (client-side only) or slow performance (server-side). I think might have seen you on calls where customers complain when they can't see all of their services. If I were to use the filter, I'd be frustrated if when searching for 'foo' I didn't find my 'foobar' service just because it wasn't already returned to the client-side. I love the fast responsiveness of the client-side filter...if we were able to leverage that speed where possible that would be a great advantage. |
@roshan-elastic Great! This is also what I ended up with implementing. WDYT about shipping this soon but behind a feature flag and disabled by default? This way we can get feedback on it and iterate |
@sqren - that's great idea! I was trying to think how we get enough feedback on this without me needing to prioritise this as a focus. This way, if we encounter anyone who complains about it - we can easily tell them to turn it on via the feature flag and get feedback. BTW I asked Beth (design director) if we could maybe get a little bit of a designers time to get their thoughts...will let you know if we can get someone. |
@autumnbeth is out this week afaik for an offsite, but what specifically do you need feedback on from design to move on? |
@sqren quick question...when I search for a service using the existing search - I do find the service but I need to match it exactly or use * to fill in the gaps: searching.for.services.mp4Could you confirm the specific limitations of the existing search that users are complaining about? It sounds like it may be a few things but wanted to align: Potential issues
Have I captured that correctly? |
@formgeist thanks for jumping on this. We can release it behind a feature flag but we think there might be a wider design pattern that needs to be considered so I wouldn't be comfortable pushing this live for all customers without there being some UX consideration from the design team. Here is a quick mock of what @sqren is proposing to push out behind a feature flag: design.mock.-.services.searching.mp4I'm happy to push this live behind a feature flag but I don't think it's ready to go live for everyone because it looks weird having multiple search bars...I think we'd need to consider the wider design here (for this, I'd want to have this prioritised as a piece of work as it'll need some good design thought I think). What's the ask? Wider pattern? Here's a quick example of why I think this may be a wider design pattern that needs to be addressed across more of the platform...I have a hunch that there's probably a consistent way to make this good but I don't think we know what that is yet: design.pattern.-searching.mp4Note : I don't think we can address this right now without having it prioritised and having the right PM, eng and design resource on it... |
@formgeist The kql search bar is not well-equipped to filtering tabular data: horrible.filtering.experience.mp4 |
While working on #127036 I needed scenarios for creating a high number of services, transactions and errors. I've removed some unnecessary stuff in the scenarios that we already have elsewhere to make them run faster.
While working on elastic#127036 I needed scenarios for creating a high number of services, transactions and errors. I've removed some unnecessary stuff in the scenarios that we already have elsewhere to make them run faster.
Closes: #127036 This adds the ability to easily search for data in tables. The search will be performed server side if there are more results than initially returned by Elasticsearch. If all results were returned the search is performed client side to provide a more snappy experience. The feature is guarded by a feature flag (disabled by default) and only available for services, transactions and errors table. # Transactions ![quick-filtering](https://github.com/elastic/kibana/assets/209966/20684b88-a103-4000-a012-ee6e35479b44) # Errors ![error3](https://github.com/elastic/kibana/assets/209966/c7f09dd9-24a5-482a-ae72-4c4477f65d3a) **Dependencies:** - #173973 - #174746 - #174750 --------- Co-authored-by: Caue Marcondes <caue.marcondes@elastic.co> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
…174490) Closes: elastic#127036 This adds the ability to easily search for data in tables. The search will be performed server side if there are more results than initially returned by Elasticsearch. If all results were returned the search is performed client side to provide a more snappy experience. The feature is guarded by a feature flag (disabled by default) and only available for services, transactions and errors table. # Transactions ![quick-filtering](https://github.com/elastic/kibana/assets/209966/20684b88-a103-4000-a012-ee6e35479b44) # Errors ![error3](https://github.com/elastic/kibana/assets/209966/c7f09dd9-24a5-482a-ae72-4c4477f65d3a) **Dependencies:** - elastic#173973 - elastic#174746 - elastic#174750 --------- Co-authored-by: Caue Marcondes <caue.marcondes@elastic.co> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
…174490) Closes: elastic#127036 This adds the ability to easily search for data in tables. The search will be performed server side if there are more results than initially returned by Elasticsearch. If all results were returned the search is performed client side to provide a more snappy experience. The feature is guarded by a feature flag (disabled by default) and only available for services, transactions and errors table. # Transactions ![quick-filtering](https://github.com/elastic/kibana/assets/209966/20684b88-a103-4000-a012-ee6e35479b44) # Errors ![error3](https://github.com/elastic/kibana/assets/209966/c7f09dd9-24a5-482a-ae72-4c4477f65d3a) **Dependencies:** - elastic#173973 - elastic#174746 - elastic#174750 --------- Co-authored-by: Caue Marcondes <caue.marcondes@elastic.co> Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
In #126446 we are going to replace the kql bar on the Service Inventory pageEDIT: we should not remove the kql bar entirely - at least this issue is not concerned with that.
We already have the kql bar which can search across any field, and will filter all components on the page. This is both very powerful but also confusing. In addition to the kql bar I suggest that tables should have a search bar that filters by the field that makes sense in the given context.
Having a search bar directly above the table will make it easier for users to filter the data on the page without having to fiddle with kql or learning our schema which is not always self explanatory. For instance, if the user needs to filter the list of errors and want to filter by "Error message" they'll need a kql query like
error.exception.message: "search term" OR error.log.message: "search term"
Example mockup (thanks @formgeist)
Three approaches for filtering tabular data
Tables that would benefit from a dedicated search bar:
transaction.name
error.exception.message
anderror.log.message
dependency.name
service.node.name
The text was updated successfully, but these errors were encountered: