Releases: block/elasticgraph
v1.0.2
New Features
- implement matchesQueryWithPrefix filtering by @brucec-sq in #814 , #810
Documentation Changes
- update documentation for MatchesQueryWithPrefix by @brucec-sq in #816
- Improve CODEBASE_OVERVIEW.md. by @myronmarston in #821
- Add diagrams to the "how it works" page. by @myronmarston in #808
- site: widen articles a bit, so wider content can fit in code boxes. by @myronmarston in #812
- site: reduce line spacing in code blocks. by @myronmarston in #813
- Add missing
raketoCONTRIBUTING.mdinstructions. by @myronmarston in #809 - site: Introduce a configuration guide. by @myronmarston in #815
- chore: update CONTRIBUTING.md to mention java requirement. by @myronmarston in #827
Internal Changes
- Refactor: stop exposing
indiceswhen we only support one. by @myronmarston in #819
Dependency Changes
- build(deps-dev): bump tailwindcss from 4.1.11 to 4.1.12 in /config/site in the npm group by @dependabot[bot] in #801
- build(deps): update mcp[cli] requirement from ~=1.12.3 to ~=1.13.0 in /ai_tools/elasticgraph-mcp-server in the pip group by @dependabot[bot] in #802
- Upgrade codespell to 2.4.1 on CI. by @myronmarston in #806
- build(deps): bump the most-gems group with 12 updates by @dependabot[bot] in #822
- build(deps): bump aws-sdk-sqs from 1.100.0 to 1.101.0 in the most-gems group by @dependabot[bot] in #823
- build(deps): bump the most-gems group with 7 updates by @dependabot[bot] in #829
- build(deps): bump the most-gems group with 12 updates by @dependabot[bot] in #830
- build(deps): bump rack from 3.2.0 to 3.2.1 by @dependabot[bot] in #837
- build(deps): bump elasticsearch from 9.1.1 to 9.1.2 by @dependabot[bot] in #836
- build(deps-dev): bump rbs from 3.9.4 to 3.9.5 by @dependabot[bot] in #834
- build(deps): bump the most-gems group with 11 updates by @dependabot[bot] in #835
- build(deps): update pytest-cov requirement from ~=6.2.1 to ~=6.3.0 in /ai_tools/elasticgraph-mcp-server in the pip group by @dependabot[bot] in #833
- build(deps-dev): bump tailwindcss from 4.1.12 to 4.1.13 in /config/site in the npm group by @dependabot[bot] in #832
- build(deps): bump bigdecimal from 3.2.2 to 3.2.3 in /config/release in the release-gems group by @dependabot[bot] in #831
- build(deps): bump the most-gems group across 1 directory with 10 updates by @dependabot[bot] in #838
- Update gem artifacts. by @myronmarston in #839
- Lock graphql gem to 2.5.11 to resolve elasticgraph-apollo test failure introduced in 2.5.12 by @bsorbo in #842
- build(deps): bump the release-gems group in /config/release with 2 updates by @dependabot[bot] in #846
- build(deps): bump the pip group in /ai_tools/elasticgraph-mcp-server with 4 updates by @dependabot[bot] in #847
- build(deps): bump the most-gems group with 10 updates by @dependabot[bot] in #843
- build(deps-dev): bump standard from 1.50.0 to 1.51.1 by @dependabot[bot] in #844
New Contributors
- @brucec-sq made their first contribution in #810
Full Changelog: v1.0.1...v1.0.2
v1.0.1
ElasticGraph v1.0.1 has been released! This release includes an improved configuration system and a bug fixes.
New Features
New JSON Schemas for Configuration
We've added JSON schema validation to the configuration system. This provides improved defaulting and validation of setting YAML files and is the basis for several new documentation resources:
Upgrade notes
The elasticgraph-json_schema gem has been merged into the elasticgraph-support gem. If you've been listing elasticgraph-json_schema in your Gemfile, you'll need to remove it.
What's Changed
New Features
- Integrate JSON schema into the config system. by @myronmarston in #774, #775, #776, #777, #773, #778, #779, #780, #781, #785, #786, #787, #792, #793, #794, #796
Bug Fixes
- fix: Resolved an issue for numeric derived fields that contained values both within Integer and Long ranges by @ayousufi in #795
Other Improvements
- Merge
elasticgraph-json_schemaintoelasticgraph-support. by @myronmarston in #772 - Various website improvements by @myronmarston in #769
- Various dependency upgrades by @dependabot[bot]. in, #764, #782, #784
- Various other codebase chores by @github-actions[bot], @myronmarston and @pfei-sq in #761, #762, #770, #771, #797, #789, #788, and #790
New Contributors
Full Changelog: v1.0.0...v1.0.1
v1.0.0
ElasticGraph v1.0.0 has been released! This marks a significant milestone in the maturity of ElasticGraph.
This release includes a number of new features and the removal of several long-deprecated features.
New Features
Substring Filtering
ElasticGraph 1.0.0 offers a couple new filtering predicates for string fields.
The contains predicate provides substring filtering:
query AverageSongLengthForYouOrEye {
artistAggregations {
nodes {
subAggregations {
albums {
nodes {
subAggregations {
tracks(filter: {
name: {
contains: {
anySubstringOf: ["you", "eye"]
ignoreCase: true
}
}
}) {
nodes {
groupedBy {
name
}
aggregatedValues {
lengthInSeconds {
approximateAvg
}
}
}
}
}
}
}
}
}
}
}The startsWith predicate provides prefix filtering:
query ArtistsPrefixedWithThe {
artists(filter: {
name: {
startsWith: {
anyPrefixOf: ["The "]
}
}
}) {
edges {
node {
name
}
}
}
}Search Highlighting
When searching through textual data it can be very useful to know where matches occurred in the returned documents. For example, to power a "global search" box that lets users search across all string/text fields, you could use a query like this:
query GlobalSearch(
$query: String = "Rock" # an example search term; replace with whatever you want
) {
artists(filter: {
anyOf: [
{albums: {anySatisfy: {name: {contains: {anySubstringOf: [$query]}}}}}
{albums: {anySatisfy: {tracks: {anySatisfy: {name: {contains: {anySubstringOf: [$query]}}}}}}}
{bio: {homeCountry: {equalToAnyOf: [$query]}}}
{bio: {description: {matchesQuery: {query: $query}}}}
{name: {contains: {anySubstringOf: [$query]}}}
{tours: {anySatisfy: {name: {contains: {anySubstringOf: [$query]}}}}}
]
}) {
edges {
node {
name
}
highlights {
albums {
name
tracks {
name
}
}
bio {
homeCountry
description
}
name
tours {
name
}
}
}
}
}ElasticGraph also offers allHighlights as an alternative to highlights which allows the query to be simplified a bit:
query GlobalSearchV2(
$query: String = "Rock" # an example search term; replace with whatever you want
) {
artists(filter: {
anyOf: [
{albums: {anySatisfy: {name: {contains: {anySubstringOf: [$query]}}}}}
{albums: {anySatisfy: {tracks: {anySatisfy: {name: {contains: {anySubstringOf: [$query]}}}}}}}
{bio: {homeCountry: {equalToAnyOf: [$query]}}}
{bio: {description: {matchesQuery: {query: $query}}}}
{name: {contains: {anySubstringOf: [$query]}}}
{tours: {anySatisfy: {name: {contains: {anySubstringOf: [$query]}}}}}
]
}) {
edges {
node {
name
}
allHighlights {
path
snippets
}
}
}
}Rather than providing the nested structure with named fields provided by highlights, this provides the highlights as a flat
list of SearchHighlight objects, each of which has a path indicating the matching field.
Bundled GraphiQL UI
Before ElasticGraph 1.0.0, ElasticGraph provided a version of GraphiQL that dependened on a CDN (https://esm.sh/) to work. This generally worked fine, but it relied on an active internet connection to work, and ElasticGraph's GraphiQL UI would stop working if the CDN had some downtime.
ElasticGraph 1.0.0 now bundles all GraphiQL assets in a new elasticgraph-graphiql gem. As part of this, we've upgraded GraphiQL from 4.0.0 to 5.2.0.
Support for Elasticsearch 9.1 and OpenSearch 3.0/3.1
ElasticGraph 1.0.0 supports these recently released versions of Elasticsearch and OpenSearch.
Upgrade notes
This release drops support for some legacy features which provided backwards compatibility for old ElasticGraph projects. The upgrade should be quite easy for most existing projects. Here's a detailed checklist.
Verify Ruby Compatibility
This release drops support for Ruby 3.2 and 3.3, requiring Ruby 3.4, which has been supported since ElasticGraph v0.19.1.0. Confirm you're using Ruby 3.4.x on CI and in production before proceeding.
Verify OpenSearch Compatibility
This release drops support for OpenSearch 2.7 to 2.18, requiring 2.19 or greater. If you're using OpenSearch in production, confirm it's version is 2.19 or greater before proceeding.
Remove nested_relationship_resolver_mode from GraphQL configuration
This option was added in ElasticGraph 0.19.2.0 when we were first rolling out the nested relationship performance optimization, so that existing projects could carefully roll that out if desired. Verify that nested_relationship_resolver_mode has been removed from your project's settings YAML files.
Verify Index Compatibility
ElasticGraph v0.9 featured a large change to how indexing worked. As part of that change, ElasticGraph began using a Painless update script for all indexing. All ElasticGraph projects bootstrapped since that time automatically use the new Painless script, but projects that started before that time may still use the old approach. Unfortunately, an index that has been written to using the old approach cannot safely be written to using the Painless update script. A backwards-compatibility mode has been kept around in ElasticGraph since that time, but ElasticGraph 1.0.0 removes it.
If your project predates ElasticGraph v0.9, you'll need to confirm your indices are ready for ElasticGraph 1.0.0 before proceeding:
- Verify that
use_updates_for_indexing: falseis not configured in any of your settings YAML files.- If
use_updates_for_indexing: trueis configured, you'll need to remove that configuration. Indexing always uses updates, and no configuration is supported to control it.
- If
- Verify that all indexed documents have a
__versionsfield. To check, use the dev tools console in Elasticsearch Kibana or OpenSearch dashboards and run one of the following queries:
For OpenSearch:
POST /*,-excluded_index1,-excluded_index2/_search
{
"derived": {
"has_versions": {
"type": "boolean",
"script": {
"source": """
def s = params._source;
if (s == null) { emit(false); }
else { emit(s.containsKey("__versions")); }
"""
}
}
},
"query": {
"term": { "has_versions": false }
},
"_source": true,
"size": 10
}
For Elasticsearch:
POST /*,-excluded_index1,-excluded_index2/_search
{
"runtime_mappings": {
"has_versions": {
"type": "boolean",
"script": {
"source": """
def s = params._source;
if (s == null) { emit(false); }
else { emit(s.containsKey("__versions")); }
"""
}
}
},
"query": {
"term": { "has_versions": false }
},
"_source": true,
"size": 10
}
Note
You'll probably have to customize the query above to exclude specific indices that do not have __versions (and should not have __versions) by replacing -excluded_index1,-excluded_index2. In general, any index that is not written to by ElasticGraph should be excluded. These may have names like .kibana_*, .plugins-*, .security* or .opendistro*. In addition, any ElasticGraph derived index (populated using the derive_indexed_type_fields schema definition API) wil not have __versions and should be excluded.
If the query returns no results (after you've excluded the appropriate indices), then you can safely proceed. If results are returned on any non-derived ElasticGraph indices, you're not ready to upgrade to 1.0.0. You'll first need to run a backfill into a fresh index using ElasticGraph 0.19.x with use_updates_for_indexing: true (or with that option omitted to use the default of true). Reach out in the #elasticgraph channel on the Block Open Source Discord server if you need help.
Remove legacy_grouping_schema: true
ElasticGraph 0.17.1.0 introduced an improved Date/Time grouping API. The GraphQL schema for it, while strictly better, was a breaking change for existing GraphQL clients. A backwards-compatibility mode was provided to allow existing ElasticGraph projects to easily upgrade:
t.field "startedAt", "DateTime", legacy_grouping_schema: trueThe legacy_grouping_schema option has been removed from ElasticGraph v1.0.0, and if your schema definition uses it, you'll have to go through a multi-step migration process before you can upgrade.
- Introduce an aliased field. The field should use an alternate name (e.g. with a
Legacysuffix), begraphql_only, and specify aname_in_indexof the original field so that it's backed by the existing field in the index:
diff --git a/config/schema/artists.rb b/config/schema/artists.rb
index dbeeef4..b633d7b 100644
---...v1.0.0.rc4
What's Changed
- Release v1.0.0.rc3 by @github-actions[bot] in #687
- Light edits to
getting-started.mdand the templateRakefile. by @myronmarston in #689 - Build against recently released OpenSearch 3.1.0. by @myronmarston in #688
- Account for graphiql and rack type signatures in
rbs_collection.yaml. by @myronmarston in #699 - Update mcp[cli] requirement from ~=1.10.1 to ~=1.11.0 in /ai_tools/elasticgraph-mcp-server by @dependabot[bot] in #698
- Incorporate
guiding-principles.mdinto ai-memory. by @myronmarston in #693 - Bump aws-partitions from 1.1125.0 to 1.1126.0 by @dependabot[bot] in #695
- Bump io-event from 1.11.2 to 1.12.0 by @dependabot[bot] in #694
- Bump async from 2.25.0 to 2.26.0 by @dependabot[bot] in #696
- Bump multi_json from 1.15.0 to 1.16.0 by @dependabot[bot] in #697
- Refresh CONTRIBUTING.md. by @myronmarston in #700
- fix: handle Content-Type header with parameters by @thomasmahoney in #691
- fix: fail with a clear error when
nestedmapping type is improperly used. by @myronmarston in #701 - Expose our universal
Class.from_yaml_fileinterface in more places by @myronmarston in #702 - Simplify elasticgraph-local acceptance tests. by @myronmarston in #704
- Automatically boot local datastore when needed. by @myronmarston in #705
- Validate all README code snippets. by @myronmarston in #706
- Shorten gem summaries. by @myronmarston in #707
- [chore] Fix CI build: deal with new
America/Coyhaiquetimezone. by @myronmarston in #710 - fix: handle
EOFErrorfromNet::HTTPcall. by @myronmarston in #711 - Bump the bundler group with 2 updates by @dependabot[bot] in #709
- Refresh READMEs. by @myronmarston in #703
- chore: document how we maintain time zones. by @myronmarston in #712
- Bump rack from 3.1.16 to 3.2.0 by @dependabot[bot] in #721
- Bump simplecov-html from 0.13.1 to 0.13.2 by @dependabot[bot] in #732
- Bump json from 2.12.2 to 2.13.2 by @dependabot[bot] in #730
- Bump aws-partitions from 1.1127.0 to 1.1139.0 by @dependabot[bot] in #726
- Bump multi_json from 1.16.0 to 1.17.0 by @dependabot[bot] in #718
- Bump faraday from 2.13.2 to 2.13.4 by @dependabot[bot] in #731
- Bump aws-sdk-sqs from 1.96.0 to 1.99.0 by @dependabot[bot] in #722
- Bump parser from 3.3.8.0 to 3.3.9.0 by @dependabot[bot] in #719
- Bump rubocop-ast from 1.45.1 to 1.46.0 by @dependabot[bot] in #713
- Bump aws-sdk-core from 3.226.2 to 3.228.0 by @dependabot[bot] in #729
- Bump aws-sdk-kms from 1.106.0 to 1.109.0 by @dependabot[bot] in #728
- Bump aws-sdk-s3 from 1.192.0 to 1.195.0 by @dependabot[bot] in #727
- Bump async from 2.26.0 to 2.27.0 by @dependabot[bot] in #725
- Bump simplecov-console from 0.9.3 to 0.9.4 by @dependabot[bot] in #724
- Bump rouge from 4.5.2 to 4.6.0 by @dependabot[bot] in #723
- Bump console from 1.32.0 to 1.33.0 by @dependabot[bot] in #720
- Bump io-event from 1.12.0 to 1.12.1 by @dependabot[bot] in #714
- Bump elasticsearch-api from 9.0.3 to 9.1.0 by @dependabot[bot] in #715
- Bump aws-sdk-lambda from 1.153.0 to 1.156.0 by @dependabot[bot] in #717
- Bump aws-sdk-cloudwatch from 1.116.0 to 1.118.0 by @dependabot[bot] in #716
- chore: improve dependabot configuration and documentation. by @myronmarston in #733
- dep: Build against newly released Elasticsearch 9.1.0. by @myronmarston in #734
- chore: fix dependabot--s/exclude-patterns/exclude_patterns/. by @myronmarston in #737
- site: Remove "GraphQL with superpowers" language. by @myronmarston in #735
- chore: configure dependabot groups for all ecosystems. by @myronmarston in #744
- chore: Use descriptive names for dependabot groups. by @myronmarston in #747
- site: Improve a couple query-api pages. by @myronmarston in #736
- build(deps): bump the github-actions group with 3 updates by @dependabot[bot] in #750
- build(deps): bump the pip group in /ai_tools/elasticgraph-mcp-server with 5 updates by @dependabot[bot] in #749
- build(deps): bump aws-partitions from 1.1139.0 to 1.1140.0 in the most-gems group across 1 directory by @dependabot[bot] in #753
- Intregrate gem READMEs (and CODEBASE_OVERVIEW) into YARD docs. by @myronmarston in #708
- chore: fix
SnippetValidatorto not leak processes. by @myronmarston in #754 - chore: remove extraneous
ElasticGraph::ConfigRBS definition. by @myronmarston in #755
New Contributors
- @thomasmahoney made their first contribution in #691
Full Changelog: v1.0.0.rc3...v1.0.0.rc4
v1.0.0.rc3
What's Changed
- Release v1.0.0.rc2 by @github-actions[bot] in #668
- chore: have dependabot update transitive dependencies, too. by @myronmarston in #669
- Bump graphql from 2.5.10 to 2.5.11 by @dependabot[bot] in #678
- Bump public_suffix from 6.0.1 to 6.0.2 by @dependabot[bot] in #680
- Bump csv from 3.3.2 to 3.3.5 by @dependabot[bot] in #673
- Bump sass-embedded from 1.77.5 to 1.89.2 by @dependabot[bot] in #685
- Bump ffi from 1.17.1 to 1.17.2 by @dependabot[bot] in #684
- Bump zeitwerk from 2.7.2 to 2.7.3 by @dependabot[bot] in #683
- Bump mini_portile2 from 2.8.8 to 2.8.9 by @dependabot[bot] in #682
- Bump rbs from 3.9.0 to 3.9.4 by @dependabot[bot] in #681
- Bump google-protobuf from 4.30.2 to 4.31.1 by @dependabot[bot] in #679
- Bump strscan from 3.1.2 to 3.1.5 by @dependabot[bot] in #677
- Bump console from 1.30.2 to 1.31.0 by @dependabot[bot] in #675
- Bump jekyll-sass-converter from 3.0.0 to 3.1.0 by @dependabot[bot] in #674
- Bump io-event from 1.10.0 to 1.11.2 by @dependabot[bot] in #672
- Bump async from 2.23.1 to 2.25.0 by @dependabot[bot] in #671
- Bump rouge from 4.5.1 to 4.5.2 by @dependabot[bot] in #670
- Bump rexml from 3.4.0 to 3.4.1 by @dependabot[bot] in #676
- Replace the ElasticGraph logo. by @myronmarston in #686
- Provide fully bundled GraphiQL UI from a new elasticgraph-graphiql gem. by @myronmarston in #634
Full Changelog: v1.0.0.rc2...v1.0.0.rc3
v1.0.0.rc2
What's Changed
- Release v1.0.0.rc1 by @github-actions in #584
- Stop using
actions-setup-docker-composefrommain. by @myronmarston in #583 - Fix
bump_version_to_next_prereleasefor a pre-release version. by @myronmarston in #585 - Fix
all_highlights: handle list-of-objects fields. by @myronmarston in #587 - De-duplicate query payloads within a single
msearchrequest. by @myronmarston in #590 - Remove unnecessary double memoization. by @myronmarston in #596
- Improve
TypeReference.enum?logic to handle input enums. by @myronmarston in #595 - Allow
Inputto be removed from specificSortOrderenums. by @myronmarston in #598 - Document the new search highlighting feature at the website. by @myronmarston in #599
- Fix typo: remove trailing period from section heading. by @myronmarston in #600
- Fix
define_fake_data_batch_fordocs. by @myronmarston in #601 - Add missing argument documentation for
highlightable. by @myronmarston in #605 - Bump tailwindcss from 4.1.8 to 4.1.10 in /config/site by @dependabot in #608
- Add support for
IGNORE_SQS_LATENCY_TIMESTAMPS_FROM_ARNS. by @myronmarston in #613 - Improve
paginated_collection_field: support more field options. by @myronmarston in #606 - Avoid requesting non-existent subfields of a scalar field. by @myronmarston in #607
- Improve handling of
name_in_indexon agraphql_onlyfield. by @myronmarston in #609 - Fix pagination bugs on
paginated_collection_fieldfields. by @myronmarston in #610 - Breaking change: improve schema definition resolver API. by @myronmarston in #602
- Introduce
ConfiguredGraphQLResolver. by @myronmarston in #603 - Support resolver config parameters when configuring it for use. by @myronmarston in #604
- Provide
apollo_entity_ref_fieldto expose an id field as an entity ref. by @myronmarston in #611 - Setup infrastructure for AI agent coding including a memory bank. by @myronmarston in #614
- Refresh README and improve YARD markdown rendering. by @myronmarston in #615
- Correct a couple of things in our guides at the website. by @myronmarston in #616
- Add the API docs for the just-released 0.19.3.0. by @myronmarston in #619
- Maintain a dependency diagram on each gem README. by @myronmarston in #620
- Enable
insecure-external-code-executionfor bundler dependabot updates. by @myronmarston in #622 - Bump github/codeql-action from 3.28.18 to 3.29.0 by @dependabot in #623
- Bump ruby/setup-ruby from 1.244.0 to 1.245.0 by @dependabot in #624
- Bump docker/build-push-action from 6.16.0 to 6.18.0 by @dependabot in #627
- Bump step-security/harden-runner from 2.12.0 to 2.12.1 by @dependabot in #626
- Bump asdf-vm/actions from 3.0.2 to 4.0.0 by @dependabot in #625
- Revert "Enable
insecure-external-code-executionfor bundler dependabot updates. (#622)" by @myronmarston in #629 - Simplify
.goosehintsa bit: trim down the prompt sections. by @myronmarston in #630 - Bump docker/setup-buildx-action from 3.10.0 to 3.11.1 by @dependabot in #632
- Bump step-security/harden-runner from 2.12.1 to 2.12.2 by @dependabot in #640
- Bump ncipollo/release-action from 1.16.0 to 1.18.0 by @dependabot in #639
- Bump github/codeql-action from 3.29.0 to 3.29.2 by @dependabot in #638
- Bump tailwindcss from 4.1.10 to 4.1.11 in /config/site by @dependabot in #636
- Update mcp[cli] requirement from ~=1.9.0 to ~=1.10.1 in /ai_tools/elasticgraph-mcp-server by @dependabot in #637
- Add a MAINTAINERS_RUNBOOK.md document. by @myronmarston in #633
- chore: rework Gemfiles. by @myronmarston in #645
- Bump rake from 13.2.1 to 13.3.0 by @dependabot in #594
- Bump httpx from 1.4.1 to 1.5.1 by @dependabot in #591
- Bump standard from 1.49.0 to 1.50.0 by @dependabot in #593
- Bump rack from 3.1.14 to 3.1.16 in the bundler group by @dependabot in #588
- Bump graphql from 2.5.6 to 2.5.10 by @dependabot in #651
- Bump elasticsearch from 9.0.2 to 9.0.3 by @dependabot in #647
- Bump ox from 2.14.22 to 2.14.23 by @dependabot in #648
- Bump aws-sdk-sqs from 1.93.0 to 1.96.0 by @dependabot in #649
- Bump aws-sdk-lambda from 1.151.0 to 1.153.0 by @dependabot in #652
- Bump faraday-retry from 2.3.1 to 2.3.2 by @dependabot in #655
- Bump hashdiff from 1.1.2 to 1.2.0 by @dependabot in #654
- Bump aws-sdk-s3 from 1.184.0 to 1.192.0 by @dependabot in #656
- Bump aws-sdk-cloudwatch from 1.114.0 to 1.116.0 by @dependabot in #653
- Increase the dependabot open-pull-request-limit. by @myronmarston in #657
- Add a Dependabot section to MAINTAINERS_RUNBOOK.md. by @myronmarston in #658
- Revert "Increase the dependabot open-pull-request-limit. (#657)" by @myronmarston in #659
- chore: rework Gemfiles again. by @myronmarston in #661
- Bump faker from 3.5.1 to 3.5.2 by @dependabot in #664
- Bump aws_lambda_ric from 3.0.0 to 3.1.3 by @dependabot in #663
- Bump rspec from 3.13.0 to 3.13.1 by @dependabot in #592
- Bump super_diff from 0.15.0 to 0.16.0 by @dependabot in #646
- Bump factory_bot from 6.5.1 to 6.5.4 by @dependabot in #666
- fix: make
countfilters on a sub-aggregation work correctly. by @myronmarston in #660
Full Changelog: v1.0.0.rc1...v1.0.0.rc2
v0.19.3.0
ElasticGraph v0.19.3.0 has been released! This release includes a couple of new features, some bug fixes, and a minor breaking change.
New Feature: Field-level Custom Resolver Arguments
We added a custom GraphQL resolver API in ElasticGraph v0.19.2.0. That release allowed the same resolver class to be used with different parameters by registering it multiple times:
require(require_path = "roll_dice_resolver")
schema.register_graphql_resolver :roll_2_dice,
RollDiceResolver,
defined_at: require_path,
number_of_dice: 2
schema.register_graphql_resolver :roll_3_dice,
RollDiceResolver,
defined_at: require_path,
number_of_dice: 3
schema.on_root_query_type do |t|
t.field "roll2Dice", "Int" do |f|
f.resolve_with :roll_2_dice
end
t.field "roll3Dice", "Int" do |f|
f.resolve_with :roll_3_dice
end
endElasticGraph v0.19.3.0 allows you to provide these parameters at the field level when configuring a field to use a resolver:
require(require_path = "roll_dice_resolver")
schema.register_graphql_resolver :roll_dice,
RollDiceResolver,
defined_at: require_path
schema.on_root_query_type do |t|
t.field "roll2Dice", "Int" do |f|
f.resolve_with :roll_dice, number_of_dice: 2
end
t.field "roll3Dice", "Int" do |f|
f.resolve_with :roll_dice, number_of_dice: 3
end
endImproved Apollo Federation Support
Apollo Federation provides a powerful way to combine multiple subgraphs into a single supergraph. ElasticGraph has shipped with the elasticgraph-apollo extension for a long time, which makes any ElasticGraph project plug into an Apollo supergraph as a subgraph.
However, ElasticGraph schemas haven't always lined up with Apollo federation idioms. To expose a reference to an Apollo entity, a subgraph needs to expose an entity reference containing a non-resolvable entity with just the @key fields:
type Product @key(fields: "id", resolvable: false) {
id: ID
}The ElasticGraph schema would then expose fields like product: Product or products: [Product!]! rather than productId: ID or productIds: [ID!]!. However, if your schema already has a productId field, migrating to the entity reference can be a significant effort, requiring clients to migrate and a backfill.
ElasticGraph v0.19.3.0 includes a new feature to help out in this situation. Here's how to use it:
# Existing field
t.field "productId", "ID"
# New field defined with the new feature
t.apollo_entity_ref_field "product", "Product", id_field_name_in_index: "productId"This exposes a Product field backed by the productId field.
You can also use this on a collection of IDs:
# Existing field
t.field "productIds", "[ID!]!"
# New field defined with the new feature
t.apollo_entity_ref_field "products", "[Product!]!", id_field_name_in_index: "productIds"Or, if you want to provide a paginated collection as a relay connection:
# Existing field
t.field "productIds", "[ID!]!"
# New field defined with the new feature
t.apollo_entity_ref_paginated_collection_field "products", "Product", id_field_name_in_index: "productIds"Upgrade Notes
This release includes a minor breaking change to the custom GraphQL resolver API added in v0.19.2.0. Previously, this was the API to configure a field to use a custom resolver:
schema.on_root_query_type do |t|
t.field "rollDice", "Int" do |f|
f.resolver = :roll_dice
end
endIn ElasticGraph v0.19.3.0, that's changed slightly:
schema.on_root_query_type do |t|
t.field "rollDice", "Int" do |f|
f.resolve_with :roll_dice
end
endIf your project uses custom resolvers (which is not common), you'll need to update to the new API as part of upgrading ElasticGraph.
What's Changed
New Features
- Improve
paginated_collection_field: support more field options. by @myronmarston in #606 - Support field-level custom resolver arguments. by @myronmarston in #603 and #604
- Provide
apollo_entity_ref_fieldto expose an id field as an entity ref. by @myronmarston in #611 - Add
request_all_fieldstoDatastoreQuery. by @myronmarston in #537
Breaking Changes
- Breaking change: improve schema definition resolver API. by @myronmarston in #602
Bug Fixes
- Avoid requesting non-existent subfields of a scalar field. by @myronmarston in #607
- Improve handling of
name_in_indexon agraphql_onlyfield. by @myronmarston in #609 - Fix pagination bugs on
paginated_collection_fieldfields. by @myronmarston in #610
Other Improvements
- Setup infrastructure for AI agent coding including a memory bank. by @myronmarston in #614
- Refresh README and improve YARD markdown rendering. by @myronmarston in #615
- Correct a couple of things in our guides at the website. by @myronmarston in #616
Full Changelog: v0.19.2.2...v0.19.3.0
v1.0.0.rc1
What's Changed
- Remove backwards compatibility with old version of the update script. by @myronmarston in #511
- Remove test infrastructure for testing old versions of the
index_datascript. by @myronmarston in #484 - Remove support for
use_updates_for_indexingfrom elasticgraph-indexer. by @myronmarston in #485 - Remove
use_updates_for_indexingconfig setting. by @myronmarston in #486 - Simplify how we deal with VCR and event versions. by @myronmarston in #487
- Bump version to 1.0.0.pre. by @myronmarston in #517
- Bump elasticsearch from 9.0.0 to 9.0.2 by @dependabot in #515
- Bump aws-sdk-s3 from 1.183.0 to 1.184.0 by @dependabot in #514
- Remove trailing comma. by @myronmarston in #518
- Bump aws-sdk-lambda from 1.148.0 to 1.149.0 by @dependabot in #516
- Bump rubocop-factory_bot from 2.26.1 to 2.27.1 by @dependabot in #512
- Fix build. by @myronmarston in #525
- Upgrade GraphiQL to 4.0.0. by @myronmarston in #524
- Bump aws-sdk-cloudwatch from 1.112.0 to 1.113.0 by @dependabot in #528
- Bump github/codeql-action from 3.28.13 to 3.28.16 by @dependabot in #519
- Bump actions/setup-python from 5.5.0 to 5.6.0 by @dependabot in #523
- Bump graphql from 2.5.4 to 2.5.6 by @dependabot in #527
- Bump faraday from 2.13.0 to 2.13.1 by @dependabot in #531
- Bump tailwindcss from 4.1.4 to 4.1.5 in /config/site by @dependabot in #530
- Bump docker/build-push-action from 6.15.0 to 6.16.0 by @dependabot in #520
- Add v0.19.2.2 API docs. by @myronmarston in #534
- Bump step-security/harden-runner from 2.11.1 to 2.12.0 by @dependabot in #522
- Bump ruby/setup-ruby from 1.229.0 to 1.237.0 by @dependabot in #521
- Bump aws-sdk-lambda from 1.149.0 to 1.150.0 by @dependabot in #529
- Update mcp[cli] requirement from ~=1.6.0 to ~=1.7.1 in /ai_tools/elasticgraph-mcp-server by @dependabot in #532
- Add
request_all_fieldstoDatastoreQuery. by @myronmarston in #536 - Build against OpenSearch 3.0.0. by @myronmarston in #539
- Bump rack from 3.1.13 to 3.1.14 in the bundler group by @dependabot in #538
- Drop
legacy_grouping_schemasupport. by @myronmarston in #542 - Deal with Rubocop plugin warnings. by @myronmarston in #541
- Add some basic documentation for
elasticgraph-schema_artifacts. by @myronmarston in #543 - Remove
nested_relationship_resolver_mode. by @myronmarston in #540 - Bump rubocop-rake from 0.6.0 to 0.7.1 by @dependabot in #513
- Remove
TextFilterInput.equal_to_any_of. by @myronmarston in #544 - Build against OpenSearch 2.19 instead of 2.7. by @myronmarston in #545
- Prevent rubocop-rake >= 0.7 for now. by @myronmarston in #547
- Bump aws-sdk-lambda from 1.150.0 to 1.151.0 by @dependabot in #550
- Bump graphql-c_parser from 1.1.2 to 1.1.3 by @dependabot in #552
- Bump aws-sdk-cloudwatch from 1.113.0 to 1.114.0 by @dependabot in #551
- Bump tailwindcss from 4.1.5 to 4.1.6 in /config/site by @dependabot in #549
- Remove deprecated
TextFilterInput.matches. by @myronmarston in #546 - Remove support for
REPORT_BATCH_ITEM_FAILURES: false. by @myronmarston in #556 - Prefer using
filterovermustin boolean queries. by @myronmarston in #558 - Update mcp[cli] requirement from ~=1.7.1 to ~=1.8.1 in /ai_tools/elasticgraph-mcp-server by @dependabot in #548
- Drop support for Ruby 3.2 and 3.3. by @myronmarston in #535
- Define new schema elements for stubstring filtering. by @myronmarston in #557
- Implement substring and prefix filtering. by @myronmarston in #559
- Document the new
containsandstartsWithfilter predicates. by @myronmarston in #560 - Bump tailwindcss from 4.1.6 to 4.1.7 in /config/site by @dependabot in #563
- Update mcp[cli] requirement from ~=1.8.1 to ~=1.9.0 in /ai_tools/elasticgraph-mcp-server by @dependabot in #564
- Introduce
internal_filtersvsclient_filtersonDatastoreQuery. by @myronmarston in #566 - Refactor
ResolvableValue: acceptschemainstead ofschema_element_names. by @myronmarston in #568 - Update
*Edgedocumentation. by @myronmarston in #562 - Define initial schema for search highlights. by @myronmarston in #565
- Add
request_all_highlightstoDatastoreQuery. by @myronmarston in #567 - Implement
SearchHighlightresolver logic. by @myronmarston in #569 - Only define
all_highlightson edge types for indexed types. by @myronmarston in #570 - Bugfix: correctly handle graphql-only fields defined with
name_in_index. by @myronmarston in #572 - Ensure
all_highlightsare always returned in consistent order. by @myronmarston in #574 - Generate
highlightstypes and fields. by @myronmarston in #571 - Add
requested_highlightstoDatastoreQuery. by @myronmarston in #573 - Implement resolver logic for
highlights. by @myronmarston in #575 - Bump ruby/setup-ruby from 1.237.0 to 1.244.0 by @dependabot in #578
- Bump github/codeql-action from 3.28.17 to 3.28.18 by @dependabot in #580
- Bump tailwindcss from 4.1.7 to 4.1.8 in /config/site by @dependabot in #582
- Bump ossf/scorecard-action from 2.4.1 to 2.4.2 by @dependabot in #577
- Bump actions/dependency-review-action from 4.6.0 to 4.7.1 by @dependabot in #579
- Bump rake from 13.2.1 to 13.3.0 in /config/release by @dependabot in #581
Full Changelog: v0.19.2.2...v1.0.0.rc1
v0.19.2.2
Bug Fixes
- Upgrade GraphiQL to 4.0.0 to fix broken GraphiQL UI. by @myronmarston in #526
Full Changelog: v0.19.2.1...v0.19.2.2
v0.19.2.1
ElasticGraph v0.19.2.1 has been released. This includes some bug fixes, performance improvements, and other minor changes.
Bug fixes
- Explicitly depend on
base64since Ruby 3.4 no longer bundles it. by @myronmarston in #481 - Bug fix: handle GraphQL exception during health checks. by @myronmarston in #488
Performance Improvements
- Use
graphql-c_parserfor faster parsing. by @myronmarston in #491 - Use GraphQL visibility profiles to cache visibility information. by @myronmarston in #482, #496, #497
Other Improvements
- Improve the logging of hidden types. by @myronmarston in #494
- Simplify the GraphQL query context. by @myronmarston in #495
- Stop using monkey patching to implement object/field visibility. by @myronmarston in #493
- Remove
for_contextargument fromSchemaArtifacts::FromDisk. by @myronmarston in #506 - Various improvements to website and docs. by @myronmarston in #468, #470, #473
- Various other codebase maintenance tasks by @myronmarston in #467, #469, #472, #471, #489, #492, #503, #504, #508, #483, #509,
Dependency Upgrades
The datastore versions we build against have been upgraded:
- Elasticsearch:
8.17.3->9.0.0by @myronmarston in #507, #505,
The following Ruby gems have been upgraded:
- elasticsearch:
8.17.2->9.0.0by @dependabot and @myronmarston in #501, #505, - faraday:
2.12.2->2.13.0by @dependabot in #476 - graphql:
2.5.1->2.5.4by @dependabot in #475, #500 - nokogiri:
1.18.7->1.18.8by @dependabot in #499 - rack:
3.1.12->3.1.13by @dependabot in #478 - rubocop-rspec:
3.4.0->3.6.0by @dependabot in #502 - standard:
1.45.0->1.49.0.by @myronmarston in #480 - tailwindcss:
4.1.3->4.1.4by @dependabot in #474
The following python packages have been upgraded:
- packaging:
24.2->25.0by @dependabot in #498
What's Changed
Full Changelog: v0.19.2.0...v0.19.2.1