Installation
Install Sigmie via Composer and connect to a local, cloud, or multi-node Elasticsearch or OpenSearch cluster with basic auth, API keys, or SSL.
On this page
Requirements
- PHP 8.1 or higher
- Elasticsearch 7.x, 8.x, or 9.x — or OpenSearch 2.x or 3.x
- Composer
Install via Composer
composer require sigmie/sigmie
Sigmie uses PSR-4 autoloading. If your project doesn’t autoload Composer’s autoloader yet:
require_once 'vendor/autoload.php';
Connect
The fastest way to connect is Sigmie::create():
use Sigmie\Sigmie; $sigmie = Sigmie::create(hosts: ['127.0.0.1:9200']);
That covers local development against an Elasticsearch instance with security disabled.
Connect to a secured cluster
For production clusters, pass auth credentials in the config array:
$sigmie = Sigmie::create( hosts: ['https://elasticsearch.example.com:9200'], config: [ 'auth' => ['elastic', 'your-password'], 'verify' => true, ]);
The config array accepts any Guzzle HTTP client option.
Connect to OpenSearch
Specify the engine type:
use Sigmie\Enums\SearchEngineType; $sigmie = Sigmie::create( hosts: ['https://localhost:9200'], engine: SearchEngineType::OpenSearch, config: [ 'auth' => ['admin', 'MyStrongPass123!'], 'verify' => false, // self-signed cert ]);
See OpenSearch for differences and AWS OpenSearch setup.
Connect to multiple nodes
$sigmie = Sigmie::create( hosts: ['10.0.0.1:9200', '10.0.0.2:9200', '10.0.0.3:9200']);
Sigmie distributes requests across nodes round-robin and retries the next node on failure.
Run Elasticsearch locally
If you don’t have a cluster yet, the fastest local setup is Docker:
docker run -d \ --name elasticsearch \ -p 9200:9200 \ -e "discovery.type=single-node" \ -e "xpack.security.enabled=false" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ docker.elastic.co/elasticsearch/elasticsearch:9.0.0
Verify it’s running:
curl http://localhost:9200
For the full AI-powered local stack (embeddings, reranking, vector models), see Docker.
Verify your connection
if ($sigmie->isConnected()) { echo "Connected.\n";}
You’re ready to build your first search — continue with the Quick Start.
Troubleshooting
cURL error 7: Failed to connect to localhost port 9200
Elasticsearch isn’t running, or the host/port in your config is wrong.
cURL error 60: SSL certificate problem
In development, set 'verify' => false. In production, point verify at your CA bundle path.
401 Unauthorized
Auth credentials are wrong, or auth isn’t enabled where you think it is. Check cluster logs.
cURL error 28: Operation timed out
Increase connect_timeout and timeout in your config array.
For full authentication and SSL options, see Connection Setup.