From 46da01c26ce84e0b3383f41aa164f614790918c4 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 20 Jan 2026 15:30:40 +0100 Subject: [PATCH 1/3] fix(search-backend-module-elasticsearch): use targeted index refresh instead of full cluster refresh Signed-off-by: nojaf --- .../src/engines/ElasticSearchSearchEngineIndexer.test.ts | 3 ++- .../src/engines/ElasticSearchSearchEngineIndexer.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts index 0ba2882c61..c36d81eb14 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.test.ts @@ -60,10 +60,11 @@ describe('ElasticSearchSearchEngineIndexer', () => { bulkSpy, ); refreshSpy = jest.fn().mockReturnValue({}); + // Use specific pattern to avoid conflict with /some-type-index__* wildcard mock mock.add( { method: 'GET', - path: '/:index/_refresh', + path: '/some-type-index__:ts/_refresh', }, refreshSpy, ); diff --git a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts index b57524e13a..484205e138 100644 --- a/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts +++ b/plugins/search-backend-module-elasticsearch/src/engines/ElasticSearchSearchEngineIndexer.ts @@ -97,7 +97,8 @@ export class ElasticSearchSearchEngineIndexer extends BatchSearchEngineIndexer { : {}), }; }, - refreshOnCompletion: options.skipRefresh !== true, + refreshOnCompletion: + options.skipRefresh !== true ? that.indexName : false, }); // Safely catch errors thrown by the bulk helper client, e.g. HTTP timeouts From 702116561850cd980690db3b0e3346323a2ad4a1 Mon Sep 17 00:00:00 2001 From: nojaf Date: Tue, 20 Jan 2026 15:35:13 +0100 Subject: [PATCH 2/3] chore: add changeset for elasticsearch bulk refresh fix Signed-off-by: nojaf --- .changeset/fix-opensearch-bulk-refresh.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/fix-opensearch-bulk-refresh.md diff --git a/.changeset/fix-opensearch-bulk-refresh.md b/.changeset/fix-opensearch-bulk-refresh.md new file mode 100644 index 0000000000..29657235a1 --- /dev/null +++ b/.changeset/fix-opensearch-bulk-refresh.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-search-backend-module-elasticsearch': patch +--- + +Fixed inefficient bulk refresh behavior where `refreshOnCompletion: true` caused a full cluster refresh of all indexes instead of refreshing only the specific index being populated. + +When using the Elasticsearch/OpenSearch bulk helper, passing `refreshOnCompletion: true` triggers a refresh of `_all` indexes. This change restores the original behavior of passing the specific index name, ensuring only the target index is refreshed after bulk indexing completes. + +This fix improves performance for OpenSearch/Elasticsearch deployments, especially in multi-tenant environments or clusters with many indexes. From 71f40b4963bbe679abcd04677c0d36ff80815ef8 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 2 Feb 2026 14:17:36 +0100 Subject: [PATCH 3/3] docs(changeset): simplify changelog entry for elasticsearch bulk refresh fix Signed-off-by: nojaf --- .changeset/fix-opensearch-bulk-refresh.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.changeset/fix-opensearch-bulk-refresh.md b/.changeset/fix-opensearch-bulk-refresh.md index 29657235a1..17a791519d 100644 --- a/.changeset/fix-opensearch-bulk-refresh.md +++ b/.changeset/fix-opensearch-bulk-refresh.md @@ -2,8 +2,4 @@ '@backstage/plugin-search-backend-module-elasticsearch': patch --- -Fixed inefficient bulk refresh behavior where `refreshOnCompletion: true` caused a full cluster refresh of all indexes instead of refreshing only the specific index being populated. - -When using the Elasticsearch/OpenSearch bulk helper, passing `refreshOnCompletion: true` triggers a refresh of `_all` indexes. This change restores the original behavior of passing the specific index name, ensuring only the target index is refreshed after bulk indexing completes. - -This fix improves performance for OpenSearch/Elasticsearch deployments, especially in multi-tenant environments or clusters with many indexes. +Fixed bulk indexing to refresh only the target index instead of all indexes, improving performance in multi-index deployments.