The -, _, and leading _ are just variations of white space / separator I have encountered. I think it's possible to document all the allowable values in the Javadoc section of the function that takes in string as their argument.
In the specific android example, I would put it here.
Under projection params where it takes in all the Images.Media.* string consts.
I think this is a fair criticism. The Merkle Tree here isn't used. I was just inspired by the diagram and come up with binary partitioning solution.
In terms of performance, it's fair to say that this binary partitioning algo is slightly worse than a cursor / search after pagination since there is an overhead of checking count while the cursor pagination does not need to.
Hmm, It never cross my mind to change/correct the design of using ES as a primary data source. My guess now is it would take as much effort or higher to migrate between ES -> SQL compared to ES -> ES.
I think the snapshot approach is interesting. If I had to start over, I'll most likely explore that.
In the specific android example, I would put it here. Under projection params where it takes in all the Images.Media.* string consts.
https://developer.android.com/reference/android/content/Cont...
Though, if it's a practice of Java Engineer to document allowable enum like string as a constant, then I can say that's a valid argument.