Runtime fields are beneficial when you need to:
- Add new fields to your documents without reindexing
- Perform on-the-fly calculations or transformations
- Explore and analyze data dynamically
- Reduce index size by moving infrequently accessed fields to runtime
Steps to Use Runtime Fields
Define a Runtime Field
Add a runtime field to your index mapping:
PUT my-index/_mapping { "runtime": { "full_name": { "type": "keyword", "script": { "source": "emit(doc['first_name'].value + ' ' + doc['last_name'].value)" } } } }
Use Runtime Fields in Queries
Query the runtime field like any other field:
GET my-index/_search { "query": { "match": { "full_name": "John Doe" } } }
Use Runtime Fields in Aggregations
Aggregate on runtime fields:
GET my-index/_search { "aggs": { "full_names": { "terms": { "field": "full_name" } } } }
Update Runtime Field Definitions
Modify the runtime field without reindexing:
PUT my-index/_mapping { "runtime": { "full_name": { "type": "keyword", "script": { "source": "emit(doc['last_name'].value + ', ' + doc['first_name'].value)" } } } }
Best Practices and Additional Information
- Use runtime fields for infrequently accessed data to optimize index size
- Consider the performance impact of complex scripts in runtime fields
- Runtime fields can be used in most query and aggregation contexts
- They can be defined at index creation, in mappings, or at query time
- Runtime fields do not affect the underlying document source
Frequently Asked Questions
Q: Can runtime fields be used in sorting?
A: Yes, runtime fields can be used for sorting in search queries, but be aware that this may impact performance for large datasets.
Q: Do runtime fields affect indexing performance?
A: No, runtime fields do not affect indexing performance as they are computed at query time. However, they may impact query performance.
Q: Can I convert a runtime field to a regular indexed field?
A: Yes, you can convert a runtime field to an indexed field by reindexing your data and including the runtime field in the new index mapping.
Q: Are there any limitations to using runtime fields?
A: Runtime fields cannot be used in certain contexts, such as highlighting. They also may have performance implications for complex calculations on large datasets.
Q: Can I use runtime fields with machine learning features in Elasticsearch?
A: Runtime fields can be used with some machine learning features, but support may be limited. It's best to check the documentation for specific ML tasks you want to perform.