We have encountered a situation with parent child documents where loading the mapping into memory is taking 15+ seconds. Per https://www.elastic.co/guide/en/elasticsearch/guide/current/parent-child-performance.html, we are constantly indexing and we have many parents (160m split over 6 shards). We are using the child documents to score search results. Queries that do not use the child documents run fast, and the queries speed up significantly when we increase our refresh_interval to 60s, except for the query that causes global ordinals to load. Unfortunately, the query time is a significant percentage of our acceptable refresh_interval, and we don't want to have index refreshes longer than a minute.
We looked at but did not try eager loading of global ordinals because it appeared to us that that would cause a lot of load on the nodes and still end up blocking queries.
Our child/parent ratio is exactly 1:1 so we decided to de-normalize and put the child information back into the parent and take the performance hit on reindexing.
Have we taken the right approach? Is there something else or another solution to consider?