Hi, the Index.LOCAL setting was introduced eons ago to allow indexing to occur once cluster-wide;
thus it's recommended when using an IndexManager such as InfinispanIndexManager and ElasticsearchIndexManager that is shared among all nodes.
Furthermore, Index.LOCAL suits ClusteredQueries [1] where each node has its own "private" index and query is broadcasted to each individual node, and aggregated in the caller before returning the results.
The issue with Index.LOCAL is when a command is originated in a NON_OWNER (this happens in DIST caches), where there is no context available that prevents obtention of previous values needed certain commands. This makes fixing [2] complex as it requires fiddling with more than a couple of interceptors, and it'd require remote fetching of values. This extra fetch could be avoided if indexing always occurs in the owners.
tl;dr