elasticsearch-php
elasticsearch-php copied to clipboard
[Proposal] Add a mapTo(class) function for map ES|QL response into objects
This is a proposal for adding a Response\Elasticsearch::mapTo($class = 'stdClass') for mapping an ES|QL response into an object of a class $class.
Here an example:
class Employee
{
public string $name;
public DateTime $birthdate;
public float $avg_salary;
public string $country;
}
$client = ClientBuilder::create()
->build();
$result = $client->esql()->query([
'body' => [
'query' => 'FROM employees | STATS avg_salary = AVG(salary) by country'
]
]);
$employees = $result->mapTo(Employee::class); // array of Employee
printf("Number of employees: %d\n", count($employees));
printf("First employee\n");
printf("Name: %s\n", $employees[0]->name);
printf("Birthdate: %s\n", $employees[0]->birthday->format('Y-m-d'));
printf("Avg salary: %.2f\n", $employees[0]->avg_salary);
printf("Country: %s\n", $employees[0]->country);
If $class is not specified the default class is stdClass.