tamayo / stretchy
Elastic Search integration for Laravel 5.0
Requires
- php: >=5.4.0
- elasticsearch/elasticsearch: ~1.0
- illuminate/support: 5.2.*
Requires (Dev)
- mockery/mockery: 0.9.2
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-10-21 04:03:57 UTC
README
Stretchy in an Elasticsearch integration for Laravel 5.
Heavily Inspired by Query Builder and Schema of laravel.
Description on going.
Version
2.0.0 - Alpha
Documentation
The current documentation is at stretchy.readthedocs.org.
#Installation
###Requirements
- PHP 5.5.9+
Installing with Composer
-
In your composer.json, add the dependency:
"tamayo/stretchy": "2.0.0"
-
Add the Stretchy service provider in your app.config:
'Tamayo\Stretchy\StretchyServiceProvider'
- Add the following aliases:
'Index' => 'Tamayo\Stretchy\Facades\Index', 'Document' => 'Tamayo\Stretchy\Facades\Document', 'Stretchy' => 'Tamayo\Stretchy\Facades\Stretchy'
- (Optional) If you want to override the default configuration:
php artisan config:publish tamayo/stretchy
Located in your laravel config directory: packages/tamayo/stretchy/config.php
##Quick Examples ####Create Index To create a basic index just do the following:
Index::create('foo');
If you want to specify shards and replicas:
Index::create('foo', function($index) { $index->shards(5); $index->replicas(1); });
####Delete Index
Index::delete('foo');
####Document indexing
Document::index('foo') ->type('tweet') ->id(13) // Optional (if not specified elastic will generate an unique id) ->insert([ 'username' => '@ericktamayo', 'tweet' => 'Hello world!' ]);
####Update a document
Document::index('foo') ->type('tweet') ->id(13) ->update(['tweet' => 'Hello world!!!']);
####Get a document
Document::index('foo')->type('tweet')->Id(13)->get();
####Delete a document
Document::index('foo')->type('tweet')->Id(13)->delete();
###Searching
#####Match Query
Stretchy::search('foo')->match('bar', 'Stretchy')->get();
To provide additional parameters:
Stretchy::search('foo') ->match('bar', 'baz', ['operator' => 'and', 'zero_terms_query' => 'all']) ->get();
or
Stretchy::search('foo') ->match('bar', 'Stretchy', function($match) { $match->operator('and'); $match->zeroTermsQuery('all'); $match->cutoffFrequency(0.001); }) ->get();
#####Term Query
Stretchy::search('foo')->term('bar', 'baz')->get();
To provide additional parameters:
Stretchy::search('foo')->term('bar', 'baz', ['boost' => 2])->get();
or
Stretchy::search('foo') ->term('bar', 'baz', function($term) { $term->boost(2); }) ->get();
#####Bool Query
Stretchy::search('foo') ->bool(function($query) { $query->must(function($must) { $must->match('bar', 'baz'); }); $query->mustNot(function($mustNot) { $mustNot->match('bar', 'qux'); }); $query->should(function($should) { $should->match('bar', 'bah'); }); $query->minimumShouldMatch(1); }) ->get();
More examples can be found in the documentation.
Roadmap
- Documentation
- Make the library to be independent from Laravel components
- PutMapping API
###Author Erick Tamayo - ericktamayo@gmail.com - @ericktamayo
License
MIT