[ES 9.0] Remove body workaround (@elastic/response-ops) (#217216)

This commit is contained in:
Alejandro Fernández Haro 2025-04-11 10:27:29 +02:00 committed by GitHub
parent 2231ba624f
commit f7e9b4c591
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 61 additions and 70 deletions

View file

@ -473,14 +473,12 @@ describe('Alerts Service', () => {
expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(1);
expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith({
name: existingIndexTemplate.name,
body: {
...existingIndexTemplate.index_template,
template: {
...existingIndexTemplate.index_template.template,
settings: {
...existingIndexTemplate.index_template.template?.settings,
'index.mapping.total_fields.limit': 2500,
},
...existingIndexTemplate.index_template,
template: {
...existingIndexTemplate.index_template.template,
settings: {
...existingIndexTemplate.index_template.template?.settings,
'index.mapping.total_fields.limit': 2500,
},
},
});

View file

@ -90,8 +90,7 @@ const updateUnderlyingMapping = async ({
try {
await retryTransientEsErrors(
// @ts-expect-error elasticsearch@9.0.0 https://github.com/elastic/elasticsearch-js/issues/2584
() => esClient.indices.putMapping({ index, body: simulatedMapping }),
() => esClient.indices.putMapping({ index, ...simulatedMapping }),
{ logger }
);

View file

@ -177,14 +177,12 @@ describe('createOrUpdateComponentTemplate', () => {
expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(1);
expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith({
name: existingIndexTemplate.name,
body: {
...existingIndexTemplate.index_template,
template: {
...existingIndexTemplate.index_template.template,
settings: {
...existingIndexTemplate.index_template.template?.settings,
'index.mapping.total_fields.limit': 2500,
},
...existingIndexTemplate.index_template,
template: {
...existingIndexTemplate.index_template.template,
settings: {
...existingIndexTemplate.index_template.template?.settings,
'index.mapping.total_fields.limit': 2500,
},
},
});
@ -283,14 +281,12 @@ describe('createOrUpdateComponentTemplate', () => {
expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(1);
expect(clusterClient.indices.putIndexTemplate).toHaveBeenCalledWith({
name: existingIndexTemplate.name,
body: {
...existingIndexTemplate.index_template,
template: {
...existingIndexTemplate.index_template.template,
settings: {
...existingIndexTemplate.index_template.template?.settings,
'index.mapping.total_fields.limit': 2500,
},
...existingIndexTemplate.index_template,
template: {
...existingIndexTemplate.index_template.template,
settings: {
...existingIndexTemplate.index_template.template?.settings,
'index.mapping.total_fields.limit': 2500,
},
},
});

View file

@ -50,17 +50,19 @@ const getIndexTemplatesUsingComponentTemplate = async (
() =>
esClient.indices.putIndexTemplate({
name: template.name,
body: {
...template.index_template,
// @ts-expect-error elasticsearch@9.0.0 https://github.com/elastic/elasticsearch-js/issues/2584
template: {
...template.index_template.template,
settings: {
...template.index_template.template?.settings,
'index.mapping.total_fields.limit': totalFieldsLimit,
},
...template.index_template,
template: {
...template.index_template.template,
settings: {
...template.index_template.template?.settings,
'index.mapping.total_fields.limit': totalFieldsLimit,
},
},
// GET brings string | string[] | undefined but this PUT expects string[]
ignore_missing_component_templates: template.index_template
.ignore_missing_component_templates
? [template.index_template.ignore_missing_component_templates].flat()
: undefined,
}),
{ logger }
);

View file

@ -379,13 +379,11 @@ describe('setLegacyIndexTemplateToHidden', () => {
await clusterClientAdapter.setLegacyIndexTemplateToHidden('foo-bar-template', currentTemplate);
expect(clusterClient.indices.putTemplate).toHaveBeenCalledWith({
name: 'foo-bar-template',
body: {
order: 0,
index_patterns: ['foo-bar-*'],
settings: { index: { number_of_shards: '1' }, 'index.hidden': true },
mappings: { dynamic: false, properties: {} },
aliases: {},
},
order: 0,
index_patterns: ['foo-bar-*'],
settings: { index: { number_of_shards: '1' }, 'index.hidden': true },
mappings: { dynamic: false, properties: {} },
aliases: {},
});
});
@ -659,7 +657,8 @@ describe('updateConcreteIndices', () => {
});
expect(clusterClient.indices.putMapping).toHaveBeenCalledWith({
index: 'foo',
body: { dynamic: false, properties: { '@timestamp': { type: 'date' } } },
dynamic: false,
properties: { '@timestamp': { type: 'date' } },
});
});
@ -720,7 +719,8 @@ describe('updateConcreteIndices', () => {
expect(clusterClient.indices.putMapping).toHaveBeenCalledWith({
index: 'foo',
body: { dynamic: false, properties: { '@timestamp': { type: 'date' } } },
dynamic: false,
properties: { '@timestamp': { type: 'date' } },
});
expect(logger.error).toHaveBeenCalledWith(
`Error updating index mappings for foo: failed to put mappings`

View file

@ -339,13 +339,10 @@ export class ClusterClientAdapter<
const esClient = await this.elasticsearchClientPromise;
await esClient.indices.putTemplate({
name: indexTemplateName,
body: {
...currentIndexTemplate,
// @ts-expect-error elasticsearch@9.0.0 https://github.com/elastic/elasticsearch-js/issues/2584
settings: {
...currentIndexTemplate.settings,
'index.hidden': true,
},
...currentIndexTemplate,
settings: {
...currentIndexTemplate.settings,
'index.hidden': true,
},
});
} catch (err) {
@ -461,8 +458,7 @@ export class ClusterClientAdapter<
const simulatedMapping = get(simulatedIndexMapping, ['template', 'mappings']);
if (simulatedMapping != null) {
// @ts-expect-error elasticsearch@9.0.0 https://github.com/elastic/elasticsearch-js/issues/2584
await esClient.indices.putMapping({ index: name, body: simulatedMapping });
await esClient.indices.putMapping({ index: name, ...simulatedMapping });
this.logger.debug(`Successfully updated concrete index mappings for ${name}`);
}
} catch (err) {

View file

@ -902,24 +902,24 @@ export class TaskStore {
{ max_docs: max_docs }: UpdateByQueryOpts = {}
): Promise<UpdateByQueryResult> {
const { query } = ensureQueryOnlyReturnsTaskObjects(opts);
const { sort, ...rest } = opts;
try {
const // @ts-expect-error elasticsearch@9.0.0 https://github.com/elastic/elasticsearch-js/issues/2584 types complain because the body should not be there.
// However, we can't use this API without the body because it fails to claim the tasks.
// eslint-disable-next-line @typescript-eslint/naming-convention
{ total, updated, version_conflicts } = await this.esClientWithoutRetries.updateByQuery(
{
index: this.index,
ignore_unavailable: true,
refresh: true,
conflicts: 'proceed',
body: {
...opts,
max_docs,
query,
},
},
{ requestTimeout: this.requestTimeouts.update_by_query }
);
// eslint-disable-next-line @typescript-eslint/naming-convention
const { total, updated, version_conflicts } = await this.esClientWithoutRetries.updateByQuery(
{
index: this.index,
ignore_unavailable: true,
refresh: true,
conflicts: 'proceed',
...rest,
max_docs,
query,
// @ts-expect-error According to the docs, sort should be a comma-separated list of fields and goes in the querystring.
// However, this one is using a "body" format?
body: { sort },
},
{ requestTimeout: this.requestTimeouts.update_by_query }
);
const conflictsCorrectedForContinuation = correctVersionConflictsForContinuation(
updated,