mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
GlobalSearch: Find related items #7241
Closed
opened 2025-12-29 20:20:46 +01:00 by adam
·
11 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
type: feature
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#7241
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @PieterL75 on GitHub (Nov 17, 2022).
NetBox version
v3.4-beta
Feature type
Change to existing functionality
Proposed functionality
When searching for an IP address, it would be great if the device it is assigned to, also is found.
When searching for an IP address, it would be great if the prefixes, aggregrate it falls under , also is found.
etc
Use case
Augment the search results, so that relations between the searched item and related objects in netbox are seen
Database changes
No response
External dependencies
No response
@jeremystretch commented on GitHub (Nov 17, 2022):
I intentionally did not include related objects in the search results, for several reasons. Primarily, it pollutes the search results with a large number of redundant and likely irrelevant entries. It's only ever possible to return objects related to an object that is already present in the search results (and that would have a higher precedence than the related objects).
It's also extremely difficult to ensure the accuracy of cached results across relationships, particularly those where no foreign key exists (such as from an IP address to its containing prefixes). By limiting the results to direct object attributes, we ensure a highly performant and accurate engine that returns only directly relevant results.
@julianstolp commented on GitHub (Nov 18, 2022):
I like the speed of the new search, but I think a lot of the clarity and usability of the search results has been lost.
It was always useful to compare the search results by, for example, part of the device name with the related results and thus quickly select the actual device you are looking for. I almost never enter complete search terms.
Would it be possible to dynamically reload the related search results and integrate them into the table as a column?
So in principle visually exactly as built up to version 3.3 only the related objects are dynamically reloaded.
@ITJamie commented on GitHub (Jan 4, 2023):
Global search has been a big hit and our team are really thankful, but like above users feel it would be nice for some of the "related" info to be available again.
for example,
The new search results are incredibly fast. We would be more than willing to sacrifice some of that speed for more context.
if a "second" data pull stage happened after retrieving the search results to go pull the information for each result on the current results page i understand it would slow down the responsiveness, this could be a configurable option or even a toggle in the search bar.
one of the ways of limiting the overhead would be to set a separate pagination limit for the amount of results shown per page on search, that way if say it finds 1000 results, the newer pagination limit (lets say 100) would mean that netbox would only need to look up additional data on the current page of 100 results. that would make netbox still feel fast while giving the previous search result contexts?
this would also have the advantage of global search cache getting "tested" before being displayed. eg if during the second stage where it pulls more info about each object, it could check that the field it was found still matches the search param, if not it could be ignored and cache marked as "bad" for that object
@t8simon commented on GitHub (Jan 12, 2023):
I would not see it as pollution, more as an enrichment, which eliminates clicks and gains more overview for the user (as long as there is grouping of objects).
With the new results in 3.4 I tend to often not use the global search but go to the model and filter for example on the IP-Address table instead, because there I have most of the related Items that I need. But this only works if I know on what model to dig - sometimes there is just a keyword that needs to be searched over everything and then it can be a lot of clicks to find the relevant items in context. Especially for users that don't use netbox regularly the acceptance has worsened.
The overview in the old results was quiet good (especially the grouping), although I wished for the same table content flexibility as in the model table (with adding / removing columns). Also some related Items would be nice to show up. For example when searching for vm2 it would be nice to have the IP addresses belonging to vm2 appearing as results as well.
@michaelklose commented on GitHub (Jan 12, 2023):
I fully agree with your points. For example we miss currently the status of an object in the results.
@PieterL75 commented on GitHub (Jan 12, 2023):
I also miss the 'Refine Search' button now..
When looking for devices, they were grouped together with low details.. Clicking the 'refine search' brought me direct to the device list page, and I was able to bulk update in a click..
Now I have to search, copy the search value, go to the device list page, open the filter tab and enter the search value
(or alternatively, go direct to that devicefilter, but then the global search page is loosing its importance)
I was actualy about to open a FR to have the search pages show the users-customized-list per model, in stead of that fixed table. But then the new search came, and made me 'looking as a cat in a tree'
@ataylor93 commented on GitHub (Jan 25, 2023):
I would like to add that the related objects feel like a major loss of functionality.
Being able to search an IP address to get its parent prefix and/or site that it belongs to was SO useful. I use it on a daily basis.
Love the speed of the new search but would certainly trade that back for the usability of the previous model.
@jeremystretch commented on GitHub (Jan 25, 2023):
That's funny, because for years the old search model was a constant source of complaints due to how limited and slow it was.
Folks, I can appreciate that people that people would prefer an ideal search solution, but this is what I came up with after several weeks of effort. I won't claim it's the best possible solution, but I didn't see anyone else propose something better. Now, if anyone would like to invest the time and effort in researching specifically how the existing implementation can be improved, I'm more than happy to discuss. However, this FR in its current form - which amounts to little more than lamenting the trade-offs of the new implementation - is not actionable, so I'm going to close it.
Again, if anyone is interested in putting in the work to address the problems I noted above, I'm happy to discuss in a new FR outlining the specific proposed improvements and how they can be feasibly achieved.
@ataylor93 commented on GitHub (Jan 25, 2023):
Provide a checkbox on the search page to include related objects? Or an option somewhere in the config to turn this on/off by default?
@PieterL75 commented on GitHub (Jan 25, 2023):
I agree that it is not feasible to try to replicate the old-result style.
Can the current table be extended with 2 columns ? related model, related ID.
When being indexed, that related item can be shown in the result. not as an extra item in the list, but as a column on a result.
plugins should also be able to provide a way to explain what a 'related item' is for the models they create...
That might be a compromise to the current view ?
For the refine search, you could add that as a dropdown on top of the result. open the dropdown, select the model and go to the searchpage of that model with the current search parameter
@PieterL75 commented on GitHub (Jan 25, 2023):
Thinking of it.. the search is that fast, it could even be possible to search 'parents' if requested.
Meaning that all 'related objects are also added to there result, and their related items, till no more relations are found..