The pipeline defined in the bulk update item here is ignored:

```
POST /_bulk
{"update":{"_id":"1","_index":"pipeline-test","pipeline":"lowercase-pipeline"}}
{"upsert":{"myField":"UPPER"},"script":{"source":"ctx._source.myField = 'CHANGED'","lang":"painless"}}
```

Only if the pipeline is defined as query string argument, then the pipeline is picked up and used to process the upset:

```
POST /_bulk?pipeline=lowercase-pipeline
{"update":{"_id":"1","_index":"pipeline-test"}}
{"upsert":{"myField":"UPPER"},"script":{"source":"ctx._source.myField = 'CHANGED'","lang":"painless"}}
```

The Bulk API should also use the pipeline defined in the bulk update item.
server/src/main/java/org/elasticsearch/action/bulk/BulkRequestParser.java
long ifSeqNo = SequenceNumbers.UNASSIGNED_SEQ_NO;
                long ifPrimaryTerm = UNASSIGNED_PRIMARY_TERM;
                int retryOnConflict = 0;
                String pipeline = defaultPipeline;
                boolean requireAlias = defaultRequireAlias != null && defaultRequireAlias;
                Map<String, String> dynamicTemplates = Map.of();
                
                
                token = parser.nextToken();
                if (token == XContentParser.Token.START_OBJECT) {
                    String currentFieldName = null;
                    while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
                        if (token == XContentParser.Token.FIELD_NAME) {
                            currentFieldName = parser.currentName();
                        } else if (token.isValue()) {
                            if (INDEX.match(currentFieldName, parser.getDeprecationHandler())) {
                                if (allowExplicitIndex == false) {
                                    throw new IllegalArgumentException("explicit index in bulk is not allowed");
                                }
                                index = stringDeduplicator.computeIfAbsent(parser.text(), Function.identity());
                            } else if (TYPE.match(currentFieldName, parser.getDeprecationHandler())) {
                                if (parser.getRestApiVersion().matches(RestApiVersion.equalTo(RestApiVersion.V_7))) {
                                    
                                    if (deprecateOrErrorOnType && typesDeprecationLogged == false) {
                                        deprecationLogger.compatibleCritical("bulk_with_types", RestBulkAction.TYPES_DEPRECATION_MESSAGE);
                                        typesDeprecationLogged = true;
                                    }
                                } else if (parser.getRestApiVersion().matches(RestApiVersion.onOrAfter(RestApiVersion.V_8))
                                    && deprecateOrErrorOnType) {
                                        throw new IllegalArgumentException(