A simple PHP Class to communicate with the Microsoft Azure Search REST API

A simple PHP Class to communicate with the Microsoft Azure Search REST API


Latest Stable Version
Build Status
Build Status
Coverage Status

benjaminhirsch/php-azure-search is a simple php toolbox to interact with the Microsoft Azure Search Service REST API.


  • Create, update and delete indexes including suggesters and corsOptions
  • Create, update and delete all type of fields including collections
  • List indexes
  • Get index statistics
  • Add, update and delete documents
  • Search documents
  • Get live suggestions
  • Count documents

Upcomming Features

  • Add scoring profiles


The easiest way to get started is to install benjaminhirsch/php-azure-search via composer.

$ composer require benjaminhirsch/php-azure-search


You get your credentials $azure_url, $azure_admin_key and $azure_version in your Microsoft Azure portal under “Search Services”.

$azuresearch = new BenjaminHirschAzureSearchService(azure_url, azure_admin_key, azure_version);

Create a Index

At first you have to create a index BenjaminHirschAzureSearchIndex in which you have to store your documents later. Your index can be filled with as many fields as you want. Adding a suggester is optional but required if you want to use live search (suggestions).

$index = new BenjaminHirschAzureSearchIndex('name of your index');
$index->addField(new BenjaminHirschAzureSearchIndexField('field name 1', BenjaminHirschAzureSearchIndexField::TYPE_STRING, true))
       ->addField(new BenjaminHirschAzureSearchIndexField('field name 2', BenjaminHirschAzureSearchIndexField::TYPE_STRING))
       ->addSuggesters(new BenjaminHirschAzureSearchIndexSuggest('livesearch', ['field name(s)']));


Delete a index

Deletes the complete index from Azure. Deleting a index also deletes the documents stored in the index.

$azuresearch->deleteIndex('name of the index to delete');

Upload documents

After you have created a index, you are ready to fill the index with your data. Maximum array size per request (1000).

$data['value'] = [
    '@search.action' => BenjaminHirschAzureSearchIndex::ACTION_UPLOAD,
    'field name 1' => <your value for field name 1>,
    'field name 2' => <your value for field name 2>

$azuresearch->uploadToIndex('name of your index', $data);

Live search (suggestions)

$azuresearch->suggestions('name of your index', 'your term', 'livesearch')

Search documents

$azuresearch->search('name of your index', 'your term');


Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *