Download the PHP package shortcodes/scout-elasticsearch-driver without Composer

On this page you can find all versions of the php package shortcodes/scout-elasticsearch-driver. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package scout-elasticsearch-driver

Scout Elasticsearch Driver

Packagist Packagist Gitter Donate

:beer: If you like my package, it'd be nice of you to buy me a beer.

:octocat: The project has a chat room on Gitter!


This package offers advanced functionality for searching and filtering data in Elasticsearch. Check out its features!

Contents

Features

Requirements

The package has been tested in the following configuration:

Installation

Use composer to install the package:

Configuration

To configure the package you need to publish settings first:

Then, set the driver setting to elastic in the config/scout.php file and configure the driver itself in the config/scout_elastic.php file. The available options are:

Option Description
client A setting hash to build Elasticsearch client. More information you can find here. By default the host is set to localhost:9200.
update_mapping The option that specifies whether to update a mapping automatically or not. By default it is set to true.
indexer Set to single for the single document indexing and to bulk for the bulk document indexing. By default is set to single.
document_refresh This option controls when updated documents appear in the search results. Can be set to 'true', 'false', 'wait_for' or null. More details about this option you can find here. By default set to null.
track_scores By default the track_scores is set to true.

Note, that if you use the bulk document indexing you'll probably want to change the chunk size, you can do that in the config/scout.php file.

Index configurator

An index configurator class is used to set up settings for an Elasticsearch index. To create a new index configurator use the following artisan command:

It'll create the file MyIndexConfigurator.php in the app folder of your project. You can specify index name and settings like in the following example:

More about index settings you can find in the index management section of Elasticsearch documentation.

To create an index just run the artisan command:

Searchable model

To create a model with the ability to perform search requests in an Elasticsearch index use the command:

After executing the command you'll find the file MyModel.php in you app folder:

Each searchable model represents an Elasticsearch type. By default a type name is the same as a table name, but you can set any type name you want through the searchableAs method. You can also specify fields which will be indexed by the driver through the toSearchableArray method. More information about these options you will find in the scout official documentation.

The last important option you can set in the MyModel class is the $searchRules property. It allows you to set different search algorithms for a model. We'll take a closer look at it in the search rules section.

After setting up a mapping in your model you can update an Elasticsearch type mapping:

Usage

Once you've created an index configurator, an Elasticsearch index itself and a searchable model, you are ready to go. Now you can index and search data according to the documentation.

Basic search usage example:

If you only need the number of matches for a query, use the count method:

If you need to load relations, use the with method:

If you need to load multiple relations you can use the with method:

In addition to standard functionality the package offers you the possibility to filter data in Elasticsearch without specifying a query string:

Also you can override model search rules:

And use variety of where conditions:

If you want to send a custom sort, you can use the orderByScript method:

At last, if you want to send a custom request, you can use the searchRaw method:

In addition to standard functionality the package offers you the possibility to aggregate data in Elasticsearch without specifying a query string:

In addition to standard functionality the package offers you the possibility to suggest data in Elasticsearch with specifying a query string:

In addition to standard functionality the package offers you the possibility to highlight data in Elasticsearch with specifying a query string:

This query will return raw response.

Console commands

Available artisan commands are listed below:

Command Arguments Description
make:index-configurator name - The name of the class Creates a new Elasticsearch index configurator.
make:searchable-model name - The name of the class Creates a new searchable model.
make:search-rule name - The name of the class Creates a new search rule.
make:aggregate-rule name - The name of the class Creates a new aggregate rule.
make:suggest-rule name - The name of the class Creates a new suggest rule.
make:highlight-rule name - The name of the class Creates a new highlight rule.
elastic:create-index index-configurator - The index configurator class Creates an Elasticsearch index.
elastic:update-index index-configurator - The index configurator class Updates settings and mappings of an Elasticsearch index.
elastic:drop-index index-configurator - The index configurator class Drops an Elasticsearch index.
elastic:update-mapping model - The model class Updates a model mapping.
elastic:migrate model - The model class, target-index - The index name to migrate Migrates model to another index.

For detailed description and all available options run php artisan help [command] in the command line.

Search rules

A search rule is a class that describes how a search query will be executed. To create a search rule use the command:

In the file app/MySearchRule.php you will find a class definition:

You can read more about bool queries here and about highlighting here.

The default search rule returns the following payload:

This means that by default when you call search method on a model it tries to find the query string in any field.

To determine default search rules for a model just add a property:

You can also set a search rule in a query builder:

Aggregate rules

A aggregate rule is a class that describes how a aggregate query will be executed. To create a aggregate rule use the command:

In the file app/MyAggregateRule.php you will find a class definition:

You can read more about aggregation queries here.

To determine default aggregate rules for a model just add a property:

Suggest rules

A suggest rule is a class that describes how a suggest query will be executed. To create a suggest rule use the command:

In the file app/MySuggestRule.php you will find a class definition:

You can read more about suggestion queries here.

To determine default suggest rules for a model just add a property:

Hightlight rules

A hightlight rule is a class that describes how a hightlight query will be executed. To create a hightlight rule use the command:

In the file app/MyHightlightRule.php you will find a class definition:

You can read more about hightlighter queries here.

To determine default hightlight rules for a model just add a property:

php // Let's say we highlight field name of MyModel. $model = App\MyModel::search('Brazil') ->rule(App\MySearchRule::class) ->first();

// Now you can get raw highlighted value: $model->highlight->name;

// or string value: $model->highlight->nameAsString;

php artisan elastic:update-index App\MyIndexConfigurator

php artisan elastic:migrate App\MyModel my_index_v2



Note, that if you need just to add new fields in your mapping, use the `elastic:update-mapping` command.

## Debug

There are two methods that can help you to analyze results of a search query:

* [explain](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html)

* [profile](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-profile.html)

Both methods return raw data from ES.

Besides, you can get a query payload that will be sent to ES, by calling the `buildPayload` method.

Note, that this method returns a collection of payloads, because of possibility of using multiple search rules in one query. 

All versions of scout-elasticsearch-driver with dependencies

PHP Build Version
Package Version
Requires php Version >=7.1.3
elasticsearch/elasticsearch Version 6.*
laravel/scout Version 8.*||9.*
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package shortcodes/scout-elasticsearch-driver contains the following files

Loading the files please wait ....