### Description

![image](https://github.com/elastic/elasticsearch/assets/76245/d0443170-0419-4759-b505-7620ff3d6594)

The execution time of grouping stats by multiple keywords has increased: 1.2 to 1.6 seconds (with doc_partitioning), 4.3 to 6.7 seconds (with shard_partitioning). The equivalent query with the _search API takes 1.8 seconds.

`from nyc_taxis | ... | stats c = count(dropoff_datetime) by trip_type, payment_type, vendor_id`

This regression occurred since July 2, 2023, and I suspect it may be due to the PR: [Support multivalued fields on arbitrary grouping](https://github.com/elastic/elasticsearch-internal/pull/1340).

/cc @nik9000
x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/BatchEncoder.java
*/
    private int currentValue;
    /**
     * Build the encoder.
     * @param batchSize The number of bytes in a batch. We'll allocate this much memory for the
     *                  encoder and only expand the allocation if the first entry in a batch
     *                  doesn't fit into the buffer.
     */
    BatchEncoder(int batchSize) {
        bytes.grow(batchSize);
    }
    /**
     * The first position in the current batch.
     */
    public int firstPosition() {
        return firstPosition;
    }
    /**
     * The number of positions in the current batch.
     */
    public int positionCount() {
        return positionCount;
    }
    /**
     * The number of values at the position with this offset in the batch.
     * The actual position in the block we're encoding is {@code positionOffset + firstPosition()}.
     */
    public int valueCount(int positionOffset) {
        if (positionOffset >= positionCount) {
            throw new IllegalArgumentException("wanted " + positionOffset + " but only have " + positionCount);