Note, I'd NOT propose GraphQL in Solr. But one single REST endpoint could be 
inspired from the principles. Much like we had for the admin/metrics/ endpoint 
for years, it's not all or nothing...

Jan

> 17. sep. 2026 kl. 20:12 skrev Eric Pugh <[email protected]>:
> 
> There is a reason people like GraphQL ;-).   If we had that, I would be 
> interested in using it….    However, since I’m interested in just getting 
> solr admin and Solr-operator moving forward, and getting V2 done, that is 
> more my focus.   But yeah, GraphQL really solves a lot of issues.
> 
>> On Sep 17, 2026, at 2:03 PM, Jan Høydahl <[email protected]> wrote:
>> 
>> Perhaps an endpoint offering a GraphQl inspired contract would be practical? 
>> You declare in the request what parts and detail level of the state you need 
>> and get just that back. Not instead of the targeted endpoints but a 
>> supplement?
>> 
>> Jan Høydahl
>> 
>>> 16. sep. 2026 kl. 18:42 skrev Eric Pugh <[email protected]>:
>>> 
>>> I’ve opened https://issues.apache.org/jira/browse/SOLR-18450 
>>> <https://issues.apache.org/jira/browse/SOLR-18450> which is to capture the 
>>> idea of keeping the guts of what CLUSTERSTATUS does, under the /api/cluster 
>>> name space, but we remove the additional various bit of data like 
>>> “liveNodes” that are returned by other APIs, but still meet the performance 
>>> characteristics/need that Solr-operator or the Solr Admin Graph view need.
>>> 
>>> I believe that Prithvi is going to move this work forward, and it may 
>>> replace/reuse his V@ list replicas and list shards API work.
>>> 
>>> Eric
>>> 
>>> 
>>>> On Sep 10, 2026, at 9:25 AM, David Smiley <[email protected]> wrote:
>>>> 
>>>>> On Thu, Sep 10, 2026 at 8:13 AM Eric Pugh 
>>>>> <[email protected] <mailto:[email protected]>>
>>>>> wrote:
>>>>> 
>>>>> Jason, you weren’t wrong! So, I dug into Solr-operator and apparently it
>>>>> calls CLUSTERSTATE all the time and wants ALL THE DATA…. And apparently
>>>>> it wants it ALL THE TIME.
>>>>> 
>>>>> 
>>>>> Here are the two current CLUSTERSTATUS usages in solr-operator:
>>>>> 
>>>>> 1. getReplicasForPod (controllers/solr_cluster_ops_util.go:701) — called
>>>>> from evictSinglePod during a managed scale-down. Fetches full 
>>>>> CLUSTERSTATUS
>>>>> (no collection param), walks every collection/shard/replica looking for 
>>>>> any
>>>>> replica whose node_name matches the pod being evicted, to determine 
>>>>> whether
>>>>> the pod is safe to terminate.
>>>> 
>>>> 
>>>> IMO this use-case is worthy of an endpoint. Basically a NODESTATUS /
>>>> CLUSTERNODESTATUS -- list stuff *on this node*. Basically a filtered
>>>> collection/shard/replica hiearchy to only replicas on the node.
>>>> 
>>>> Or alternatively a parameter to the collection list api to filter listed
>>>> collections to those with a replica on a target node.
>>>> 
>>>> 
>>>>> 2. GetNodeReplicaState (controllers/util/solr_update_util.go:124) — called
>>>>> from handleManagedCloudRollingUpdate during a managed rolling update.
>>>>> Fetches full CLUSTERSTATUS plus a separate OVERSEERSTATUS call, aggregates
>>>>> per-node leader/replica/active-shard counts via findSolrNodeContents, and
>>>>> feeds DeterminePodsSafeToUpdate's decision about which out-of-date pod to
>>>>> restart next.
>>>>> 
>>>>> Apparently, this is what the query load would look like under what I had
>>>>> proposed to break up cluster status:
>>>>> 
>>>>> Under the proposed hierarchy, reconstructing the same picture needs:
>>>>> 
>>>>> Requests needed to replace 1 CLUSTERSTATUS call:
>>>>> 
>>>>> GET /api/collections 1 call
>>>>> GET /api/collections/{c}/shards (per collection) C calls
>>>>> GET /api/collections/{c}/shards/{s}/replicas (per shard) C x S
>>>>> calls
>>>>> ------------------------------------------------------
>>>>> Total 1 + C + (C x S)
>>>>> 
>>>>> Example: C=20 collections, S=4 shards each
>>>>> 1 + 20 + (20 x 4) = 101 requests (vs. 1 today)
>>>>> 
>>>> 
>>>> Doesn't V2 have a way to return the complete collection geometry for a
>>>> collection? If it doesn't; it should!
>>>> 
>>>> 
>>>>> So, not totally sure what to do with that information?
>>>>> 
>>>>> Digging a bit more, it turns out that one thing that makes CLUSTERSTATUS
>>>>> not restful is the set of booleans that we pass in (
>>>>> https://solr.apache.org/guide/solr/latest/deployment-guide/cluster-node-management.html#clusterstatus-parameters
>>>>>  
>>>>> <https://solr.apache.org/guide/solr/latest/deployment-guide/cluster-node-management.html#clusterstatus-parameters>
>>>>>  
>>>>> <https://solr.apache.org/guide/solr/latest/deployment-guide/cluster-node-management.html#clusterstatus-parameters
>>>>>  
>>>>> <https://solr.apache.org/guide/solr/latest/deployment-guide/cluster-node-management.html#clusterstatus-parameters>>).
>>>>> 
>>>>> 
>>>>> I looked again at solr-operator and Solr Admin UI, and both do want the
>>>>> the full collections→shards→replicas tree that we have today as well as 
>>>>> the
>>>>> set of live nodes. However, neither wants aliases, roles, or cluster
>>>>> properties.
>>>>> 
>>>>> So, now I am thinking that maybe we update the v2 /api/cluster endpoint to
>>>>> continue to return the collections→shards→replicas tree, but remove the
>>>>> liveNodes,clusterProperties, aliases, roles parameters, since we have
>>>>> existing APIs that provide that.
>>>>> 
>>>> 
>>>> +1.
>>>> And with a node filter?
>>>> 
>>>> 
>>>>> 
>>>>> Apparently, that redoes the math for Solr Operator and only requires one
>>>>> more call to /api/cluster/nodes than we have today, solving that problem 
>>>>> of
>>>>> lots of extra calls…
>>>>> 
>>>>> We may still want to add the GET /api/collections/{c}/shards and GET
>>>>> /api/collections/{c}/shards/{s}/replicas, but now they are much less
>>>>> important.
>>>>> 
>>>>> Thoughts?
>>>>> 
>>>>> 
>>>>> Eric
>>>>> 
>>>>> 
>>>> ~ David
>>> 
>>> Disclaimer
>>> 
>>> The information contained in this communication from the sender is 
>>> confidential. It is intended solely for use by the recipient and others 
>>> authorized to receive it. If you are not the recipient, you are hereby 
>>> notified that any disclosure, copying, distribution or taking action in 
>>> relation of the contents of this information is strictly prohibited and may 
>>> be unlawful.
>>> 
>>> This email has been scanned for viruses and malware, and may have been 
>>> automatically archived by Mimecast, a leader in email security and cyber 
>>> resilience. Mimecast integrates email defenses with brand protection, 
>>> security awareness training, web security, compliance and other essential 
>>> capabilities. Mimecast helps protect large and small organizations from 
>>> malicious activity, human error and technology failure; and to lead the 
>>> movement toward building a more resilient world. To find out more, visit 
>>> our website.
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
> 
> Disclaimer
> 
> The information contained in this communication from the sender is 
> confidential. It is intended solely for use by the recipient and others 
> authorized to receive it. If you are not the recipient, you are hereby 
> notified that any disclosure, copying, distribution or taking action in 
> relation of the contents of this information is strictly prohibited and may 
> be unlawful.
> 
> This email has been scanned for viruses and malware, and may have been 
> automatically archived by Mimecast, a leader in email security and cyber 
> resilience. Mimecast integrates email defenses with brand protection, 
> security awareness training, web security, compliance and other essential 
> capabilities. Mimecast helps protect large and small organizations from 
> malicious activity, human error and technology failure; and to lead the 
> movement toward building a more resilient world. To find out more, visit our 
> website.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to