This package is abandoned and no longer maintained. No replacement package was suggested.

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

0.9.2 2018-10-27 17:00 UTC

This package is auto-updated.

Last update: 2023-02-02 18:51:28 UTC


Microsoft Azure Search Service for php

Latest Stable Version Build Status Build Status Coverage Status License

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 BenjaminHirsch\Azure\Search\Service(azure_url, azure_admin_key, azure_version);

Create a Index

At first you have to create a index BenjaminHirsch\Azure\Search\Index 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 BenjaminHirsch\Azure\Search\Index('name of your index');
$index->addField(new BenjaminHirsch\Azure\Search\Index\Field('field name 1', BenjaminHirsch\Azure\Search\Index\Field::TYPE_STRING, true))
       ->addField(new BenjaminHirsch\Azure\Search\Index\Field('field name 2', BenjaminHirsch\Azure\Search\Index\Field::TYPE_STRING))
       ->addSuggesters(new BenjaminHirsch\Azure\Search\Index\Suggest('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' => BenjaminHirsch\Azure\Search\Index::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');