[Idea] Introduce new compute role / phase (aka: dynamic fields) #1912
Labels
discuss
Issues intended to help drive brainstorming and decision making
feature
New feature or request
Search:Aggregations
Dynamic fields (e.g., runtime fields) are useful for many different applications (search time transforms, joins, scripted field search, etc).
One way of achieving this is to create in memory doc values at search time. This is what the FieldData implementation did before doc values were leveraged in Lucene. This is memory intensive, slow, etc. Some users are okay with the performance penalty in favor of flexibility. I postulate that "make it slow" to prioritize flexibility over performance should not be a trade off when it can be avoided; even if there is a mechanism such as the async api.
I'd like to propose and brainstorm using
IndexWriter
and an fsync-free implementation of Lucenecommit
to write local segments to a temporary directory consisting of on-disk index or docvalue representation of the search results.In this manner the segments look just like a persisted index with one difference, by default they're intended to be "volatile" and short lived. The benefit is a reduced, runtime view of the global index (based on a user defined query) that can be further inspected or joined with any additional query or aggregation. Users can also choose to promote the volatile compute segments to a new index, creating an SQL-like ability to persist views in new indexes.
to be continued...
The text was updated successfully, but these errors were encountered: