PHPackages                             oscarweijman/php-elastic - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. oscarweijman/php-elastic

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

oscarweijman/php-elastic
========================

Een moderne PHP library voor het werken met Elasticsearch, met focus op eenvoud en type safety

v1.1.1(1y ago)03MITPHPPHP ^8.2CI passing

Since Mar 15Pushed 1y ago1 watchersCompare

[ Source](https://github.com/OscarWeijman/PHP-Elastic)[ Packagist](https://packagist.org/packages/oscarweijman/php-elastic)[ RSS](/packages/oscarweijman-php-elastic/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (2)Versions (4)Used By (0)

PHP Elastic
===========

[](#php-elastic)

Een moderne PHP library voor het werken met Elasticsearch, met focus op eenvoud en type safety.

Installatie
-----------

[](#installatie)

```
composer require oscarweijman/php-elastic
```

Basis gebruik
-------------

[](#basis-gebruik)

```
use OscarWeijman\PhpElastic\ElasticClient;

// Maak een client instance
$client = new ElasticClient([
    'hosts' => ['localhost:9200'],
]);

// Controleer of Elasticsearch beschikbaar is
if ($client->ping()) {
    echo "Verbonden met Elasticsearch!";
}

// Maak een index
$client->createIndex('my-index', [
    'number_of_shards' => 1,
    'number_of_replicas' => 1
], [
    'properties' => [
        'title' => ['type' => 'text'],
        'content' => ['type' => 'text'],
        'tags' => ['type' => 'keyword'],
        'published_at' => ['type' => 'date']
    ]
]);

// Voeg een document toe
$client->index('my-index', [
    'title' => 'Mijn eerste document',
    'content' => 'Dit is de inhoud van mijn document',
    'tags' => ['elasticsearch', 'php'],
    'published_at' => '2023-01-01T12:00:00Z'
], 'doc-1');

// Zoek documenten
$results = $client->search([
    'index' => 'my-index',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'document'
            ]
        ]
    ]
]);

// Verwijder een document
$client->delete('my-index', 'doc-1');

// Verwijder een index
$client->deleteIndex('my-index');
```

Vector Search en Embeddings
---------------------------

[](#vector-search-en-embeddings)

PHP Elastic ondersteunt ook vector search en embeddings voor semantisch zoeken:

```
use OscarWeijman\PhpElastic\ElasticClient;
use OscarWeijman\PhpElastic\Embedding\EmbeddingService;
use OscarWeijman\PhpElastic\Embedding\EmbeddingManager;

// Maak client instances
$client = new ElasticClient(['hosts' => ['localhost:9200']]);
$embeddingService = new EmbeddingService(
    'http://localhost:11434',  // Ollama API URL
    '',  // API key (niet nodig voor Ollama)
    [
        'nomic-embed' => [
            'name' => 'nomic-embed-text',
            'dims' => 768,
            'type' => 'ollama'
        ]
    ]
);
$embeddingManager = new EmbeddingManager($client, $embeddingService);

// Maak een index met vector mapping
$embeddingManager->createVectorIndex('articles', 'nomic-embed', [
    'title' => ['type' => 'text'],
    'category' => ['type' => 'keyword']
]);

// Voeg een document toe met embedding
$embeddingManager->indexWithEmbedding(
    'articles',
    'nomic-embed',
    'Dit is een artikel over machine learning en AI.',
    [
        'title' => 'Machine Learning Introductie',
        'category' => 'technology'
    ],
    'article-1'
);

// Zoek semantisch vergelijkbare documenten
$results = $embeddingManager->searchWithEmbedding(
    'articles',
    'nomic-embed',
    'Wat is kunstmatige intelligentie?',
    5
);

// Hybride zoeken (vector + keyword)
$results = $embeddingManager->searchHybrid(
    'articles',
    'nomic-embed',
    'machine learning technieken',
    5,
    [],
    'embedding',
    'content',
    0.7,  // vector boost
    0.3   // text boost
);
```

Evaluatie van Embedding Modellen
--------------------------------

[](#evaluatie-van-embedding-modellen)

Je kunt verschillende embedding modellen evalueren om te bepalen welke het beste presteert voor jouw use case:

```
use OscarWeijman\PhpElastic\ElasticClient;
use OscarWeijman\PhpElastic\Embedding\EmbeddingService;
use OscarWeijman\PhpElastic\Embedding\ModelEvaluator;

// Configureer modellen
$embeddingService = new EmbeddingService('http://localhost:11434');
$embeddingService->addModel('nomic-embed', 'nomic-embed-text', 768, 'ollama');
$embeddingService->addModel('all-minilm', 'all-minilm', 384, 'ollama');
$embeddingService->addModel('e5-small', 'e5-small-v2', 384, 'ollama');

// Maak evaluator met test data
$evaluator = new ModelEvaluator(
    $client,
    $embeddingService,
    $testData,  // Array met documenten en queries
    ['nomic-embed', 'all-minilm', 'e5-small']
);

// Voer evaluatie uit
$evaluator->setupTestIndices();
$evaluator->indexTestData();
$results = $evaluator->evaluateModels();
$evaluator->printResults();
```

Geavanceerd gebruik
-------------------

[](#geavanceerd-gebruik)

Bekijk de voorbeelden in de `examples` directory voor meer geavanceerde gebruiksscenario's:

- `01-basic-usage.php`: Basis gebruik van de client
- `02-index-management.php`: Index beheer
- `03-document-management.php`: Document beheer
- `04-search-examples.php`: Zoekvoorbeelden
- `05-advanced-search.php`: Geavanceerde zoekopdrachten
- `06-single-node-cluster.php`: Werken met een single-node cluster
- `07-vector-search.php`: Vector search en embeddings
- `08-model-evaluation.php`: Evaluatie van embedding modellen

Documentatie
------------

[](#documentatie)

Volledige documentatie is beschikbaar in de [wiki](https://github.com/oscarweijman/php-elastic/wiki).

Licentie
--------

[](#licentie)

MIT

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance45

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

429d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6ff8873bc406af8c3868c6f3bce1d214de3c2f3bd675e48951b592b25bd6021e?d=identicon)[OscarW](/maintainers/OscarW)

---

Top Contributors

[![OscarWeijman](https://avatars.githubusercontent.com/u/5451613?v=4)](https://github.com/OscarWeijman "OscarWeijman (16 commits)")

---

Tags

phpsearchelasticsearchindexdocument

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/oscarweijman-php-elastic/health.svg)

```
[![Health](https://phpackages.com/badges/oscarweijman-php-elastic/health.svg)](https://phpackages.com/packages/oscarweijman-php-elastic)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
