How to run ElasticSearch queries with PHP and cURL example

In the realm of modern data handling, Elasticsearch has emerged as a powerhouse, offering rapid data search and analysis.

As a PHP developer, integrating this robust search engine into your projects can elevate your data operations to new heights. In this article, we'll illustrate a concise example of how to create an index, create a document, get a document, and search for documents using PHP's cURL library.

The following examples will empower you to efficiently store, retrieve, and manipulate data through Elasticsearch's RESTful API, all within the familiar PHP environment.

Symfony vs Laravel Performance Benchmark

I've decided to test the performance of two popular PHP frameworks - Laravel and Symfony. The results surprised me.

The performance test which I've conducted is quite simple. I've created two projects in Symfony and Laravel with only one page, no database queries, no API calls, and no complex calculations, just one simple page. Then I ran HTTP stress tests using a benchmarking tool against both setups and the results are surprising.

You can check both projects on my GitHub - Symfony / Laravel.

Symfony version: 5.4

Laravel version: 10.10

Did you know that Laravel uses a lot of Symfony components under the hood?

Symfony is known for making really good components used across the whole PHP ecosystem in numerous packages. Most of the Symfony components can be used as a standalone package without the need for Symfony itself, which is quite handy.

For example, the laravel/framework packages uses 11 Symfony components (at the time of writing this post), some of which are symfony/routing, symfony/mailer, symfony/http-foundation etc.

Let's start with the fun part.

How to get all indices in ElasticSearch with curl command?

To get all indices in ElasticSearch with curl, you can use the following command:

$ curl localhost:9200/_cat/indices

which outputs

$ curl localhost:9200/_cat/indices
yellow open test-index-yoan                 5ChC9F9ZSGSRmooDAIrd9A 1 1 0  0   208b   208b
yellow open my-index-000001                 Be3surqXQzy8_EVW9k1VZA 1 1 0  0   208b   208b

mod_php vs php-fpm Performance Benchmark [Surprising Results]

Have you ever wondered if Apache mod-php is faster than php-fpm with Nginx? I surely did.

Each time this question arises, I do a quick research, and I cannot seem to find a definitive answer. It seems that the recommended way to run PHP websites nowadays is to use php-fpm with Nginx, but is that the best method? Some articles state that php-fpm is 300% faster than mod-php, other articles state that mod-php is faster, and so on.

This is why I've decided to conduct my own tests and performance benchmark and settle this debate once and for all.

The result surprised me.

How to install wrk on Ubuntu

To install wrk on Ubuntu, you need to run:

sudo apt-get update
sudo apt-get install wrk

What is the difference between let and var in Javascript?

The difference between let and var is the scope in which the variables are available.

  • let declares a block-scoped variable. They are accessible only within the block (enclosed by curly braces) in which they are defined.
  • var declares function scoped or globally-scoped variable. This means they are accessible throughout the entire function in which they are defined or globally if defined outside of any function.

But what does that mean? Let's look at the examples below to understand the differences better.

How to get parameter in Symfony controller

To get parameters in Symfony controller, you can bind a parameter to a variable and inject it into a controller or service.

How to list directory files in Symfony

To list files in a directory with Symfony, you can use the Finder Component - $finder->files()->in(__DIR__);

Let's look at the example below to understand better how the Finder component works.

How to fix Only attribute mapping is supported by make:entity error in Symfony

To fix the Only attribute mapping is supported by make:entity error error in Symfony, you need to change your Doctrine Entity type in your config/packages/doctrine.yaml from annotation to attribute.

How to use Symfony Query Builder where

In Symfony, the Doctrine Query Builder provides a convenient and object-oriented way to construct complex SQL queries. The where() method is used within the Query Builder to add conditions to your queries. Here's how you can use it: