in lib/Search/Elasticsearch/Client/8_0/Role/Bulk.pm [244:276]
sub _doc_transformer {
#===================================
my ( $self, $params ) = @_;
my $bulk_args = $self->_bulk_args;
my %allowed = map { $_ => 1, "_$_" => 1 }
( @{ $self->_metadata_params }, 'source' );
$allowed{fields} = 1;
delete @allowed{ 'index', '_index' } if $bulk_args->{index};
delete @allowed{ 'type', '_type' } if $bulk_args->{type};
my $version_type = $params->{version_type};
my $transform = $params->{transform};
return sub {
my %doc = %{ shift() };
for ( keys %doc ) {
delete $doc{$_} unless $allowed{$_};
}
if ( my $fields = delete $doc{fields} ) {
for (qw(_routing routing _parent parent)) {
$doc{$_} = $fields->{$_}
if exists $fields->{$_};
}
}
$doc{_version_type} = $version_type if $version_type;
return \%doc unless $transform;
return $transform->( \%doc );
};
}