What is there both index 'id' & 'getId' (in catalog)

What is the diffence between index 'id' vs 'getId' (in catalog), and why do we have both?

Probably they are the same and should be merged, but it will require someone to do a careful analysis of where the existing indexes are used and make a proposal about how to clean it up.

But you can't be sure which third parties are using and there's little benefit to gain relative to this cost right? Seems like it's a legacy of Plone/Zope being 20 years old, and developing ideas about when to you use attributes vs getter/setter methods. Ideally you standardize the API so everything should either use the id attribute or the getId method (and probably change id to _id if you're going to do that), and Plone and implementers should adhere to that when new indexes are needed. But at this point, if you try to standardize for this field, best case you save a fractional amount of indexing time, worst case you break something because logic was using id vs getId or vice versa.

getId is used in lots of place. Removing getId would break a lot of code and applications.