Skip to content

ErickTamayo/Stretchy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stretchy

Build Status

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

  1. In your composer.json, add the dependency: "tamayo/stretchy": "2.0.0"

  2. Add the Stretchy service provider in your app.config:

        'Tamayo\Stretchy\StretchyServiceProvider'
  1. Add the following aliases:
		'Index'    => 'Tamayo\Stretchy\Facades\Index',
		'Document' => 'Tamayo\Stretchy\Facades\Document',
		'Stretchy' => 'Tamayo\Stretchy\Facades\Stretchy'
  1. (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

About

Elasticsearch integration for Laravel - Alpha

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages