ElasticGraph v1.1.0 has been released! This release includes new gems for data warehouse integration, Ruby 4.0 support, significant performance optimizations, and bug fixes.
New Features
Data Warehouse Integration
Two new gems have been added to support data warehouse integration:
elasticgraph-warehouse: An extension that generates Data Warehouse table configurations from ElasticGraph schemas. This enables seamless integration with data warehouse systems like Apache Hive, AWS Athena, and similar SQL-based analytical platforms by automatically generating DDL and configuration files. After adding it to an ElasticGraph project, run bundle exec rake schema_artifacts:dump and a data_warehouse.yaml file will be generated containing SQL CREATE TABLE statements for each indexed type.
elasticgraph-warehouse_lambda: An AWS Lambda integration for warehouse data export. This gem enables export of indexing operations to S3 as gzipped JSONL files, with features like deterministic S3 keys with versioning, date partitioning, and UUIDs.
Ruby 4.0 Support
ElasticGraph now supports Ruby 4.0 (and uses Bundler 4.0).
JSON Schema Improvements
- Generated JSON schemas now include field
descriptionfields, useful for documentation and code generation tools (#875) - JSON schema strictness can now be configured with
allow_omitted_fieldsandallow_extra_fieldsoptions (#876)
Query Registry Improvements
- Added
extension_datatoQueryDetailsTrackerenabling GraphQL extensions to log additional data. The query registry uses this to logquery_registration_status(#981) - Improved operation name handling by preferring
selected_operation_nameoveroperation_name, which is safer when a query has only one operation (#986)
Version Validation for Schema Artifacts
ElasticGraph now validates that the schema artifacts version matches the runtime version, raising an error on mismatch (#874)
Upgrade notes
If you use sourced_from in your schema definition, you must now configure your index with i.has_had_multiple_sources! within the t.index block. This ensures the elasticgraph-graphql query engine correctly filters on multi-source documents while avoiding some additional queries ElasticGraph used to make for this case. Once added, this configuration should be retained even if sourced_from fields are later removed, as it remains true forever that the index has had multiple sources.
What's Changed
New Features
- Add
elasticgraph-warehousegem for data warehouse integration by @jwils in #884, #885, #916, #944, #945, #946, #947, #948, #949, #925, #956, #959, #960 - Add
elasticgraph-warehouse_lambdagem for AWS Lambda integration by @jwils in #973, #974, #975 - Support Ruby 4.0 (and use Bundler 4.0) by @myronmarston in #958
- Add
extension_datatoQueryDetailsTrackerfor query registry logging by @myronmarston in #981 - Prefer
selected_operation_nameoveroperation_nameby @myronmarston in #986 - Support descriptions in generated JSON schemas by @mayurvaishnav in #875
- Allow JSON schema strictness to be configured by @ciaran51 in #876
- Validate schema artifacts version matches runtime version by @coreyosity in #874
Performance Optimizations
- Implement
grouping_missing_value_placeholderfor optimized aggregation subaggregations. Previously, when grouping by multiple fields, ElasticGraph created exponentially many subaggregations to handle missing values. The new approach achieves linear scaling, significantly improving performance for queries that group by many fields. by @mmarston and @myronmarston in #890, #893, #894, #895, #903 - Omit Elasticsearch API calls on indexer boot by @ayousufi in #857
- Optimize
searches_could_hit_incomplete_docs?to avoid datastore queries by @ayousufi in #911
Bug Fixes
- Resolve range query filter bugs where filters were being overridden due to
deep_mergeand Ruby hash merging by @ayousufi in #912 - Fix site:doctest by @jwils in #918
Other Improvements
- Improve error messages to include 'bundle exec' prefix for rake commands by @mayurvaishnav in #872
- Update GraphiQL from 5.2.0 to 5.2.2 by @myronmarston in #979
- Add
script/lintand document it inCONTRIBUTING.mdby @myronmarston in #877 - Use GitHub App for update-gem-version-artifacts workflow by @finn-block in #855
- Fix grammar in docs by @myronmarston in #928
- Internal refactoring to make
SchemaArtifactManagermore extensible by @myronmarston in #883, #920, #927, #953 - Codebase cleanup: remove vestigial code, workarounds, and comments by @myronmarston in #921, #926, #954, #957, #972, #977
- Improve developer tooling by @myronmarston and @jwils in #902, #905, #955, #976, #978, #881
- Update copyright year to 2026 by @jwils in #966
- Update CODEOWNERS by @zachbutler-squareup in #915
- Update gem authors by @jwils in #982
- Pin aws-sdk-cloudwatch to fix CI test failures by @myronmarston in #939
Dependency Upgrades
The datastore versions we build against have been upgraded:
The following Ruby gems have been upgraded:
- graphql: 2.5.11 -> 2.5.18 (#919, #936, #988)
- rack: 3.2.1 -> 3.2.4 (#867, #933)
- yard: 0.9.37 -> 0.9.38 (#929, #941)
- json_schemer: 2.4.0 -> 2.5.0 (#932, #935)
- rbs: 3.9.x -> 3.10.2 (#965, #970)
- standard: 1.51.1 -> 1.53.0 (#924, #984)
- nokogiri: 1.18.10 -> 1.19.0 (#961)
- bigdecimal: 3.2.3 -> 4.0.1 (#869, #950)
- rake: 13.3.0 -> 13.3.1 (#898)
- aws-sdk-s3: 1.205.0 -> 1.208.0 (#943)
- Various gems via grouped dependabot PRs (#852, #906, #909, #914, #923, #952, #962, #968, #969, #985, #987)
The following GitHub actions have been upgraded:
The following NPM packages have been upgraded:
- tailwindcss: 4.1.13 -> 4.1.18 (#864, #878, #887, #908, #934)
- @tailwindcss/typography: 0.5.16 -> 0.5.19 (#851, #860)
The following Python packages have been upgraded:
- mcp[cli]: 1.14.0 -> 1.25.0 (#859, #879, #886, #900, #930, #937, #951)
- Various packages via pip group (#870, #907, #922)
New Contributors
- @jwils made their first contribution in #884
- @mmarston made their first contribution in #890
- @mayurvaishnav made their first contribution in #872
- @nicolewoch made their first contribution in #867
- @finn-block made their first contribution in #855
- @coreyosity made their first contribution in #874
- @ciaran51 made their first contribution in #876
Full Changelog: v1.0.2...v1.1.0