在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):cviebrock/laravel-elasticsearch开源软件地址(OpenSource Url):https://github.com/cviebrock/laravel-elasticsearch开源编程语言(OpenSource Language):PHP 100.0%开源软件介绍(OpenSource Introduction):Laravel-ElasticsearchAn easy way to use the official Elastic Search client in your Laravel or Lumen applications.
Installation and ConfigurationInstall the current version of the composer require cviebrock/laravel-elasticsearch If you are using ElasticSearch version 5, then install version 2 of this package: composer require cviebrock/laravel-elasticsearch:^2 LaravelThe package's service provider will automatically register its service provider. Publish the configuration file: php artisan vendor:publish --provider="Cviebrock\LaravelElasticsearch\ServiceProvider" Alternative configuration method via .env fileAfter you publish the configuration file as suggested above, you may configure ElasticSearch
by adding the following to your application's ELASTICSEARCH_HOST=localhost
ELASTICSEARCH_PORT=9200
ELASTICSEARCH_SCHEME=http
ELASTICSEARCH_USER=
ELASTICSEARCH_PASS= Connecting to AWS Elasticsearch ServiceIf you are connecting to ElasticSearch instances on Amazon AWS, then you'll also
need to AWS_ELASTICSEARCH_ENABLED=true
AWS_REGION=...
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=... If you have to use another authentication method having custom credentials (i.e. <?php
// config/elasticsearch.php
$provider = \Aws\Credentials\CredentialProvider::instanceProfile();
$memoizedProvider = \Aws\Credentials\CredentialProvider::memoize($provider);
$credentials = $memoizedProvider()->wait();
...
'hosts' => [
[
'host' => env('ELASTICSEARCH_HOST', 'localhost'),
// For local development, the default Elasticsearch port is 9200.
// If you are connecting to an Elasticsearch instance on AWS, you probably want to set this to null
'port' => env('ELASTICSEARCH_PORT', 9200),
'scheme' => env('ELASTICSEARCH_SCHEME', null),
'user' => env('ELASTICSEARCH_USER', null),
'pass' => env('ELASTICSEARCH_PASS', null),
// If you are connecting to an Elasticsearch instance on AWS, you will need these values as well
'aws' => env('AWS_ELASTICSEARCH_ENABLED', false),
'aws_region' => env('AWS_REGION', ''),
'aws_key' => env('AWS_ACCESS_KEY_ID', ''),
'aws_secret' => env('AWS_SECRET_ACCESS_KEY', '')
'aws_credentials' => $credentials
],
], If you have a job that runs in supervisor, you have to use the Closure. This way the credentials will be renewed at runtime. <?php
// config/elasticsearch.php
$provider = \Aws\Credentials\CredentialProvider::instanceProfile();
$memoizedProvider = \Aws\Credentials\CredentialProvider::memoize($provider);
...
'hosts' => [
[
...
'aws_credentials' => $memoizedProvider
],
], If you are using <?php
// config/elasticsearch.php
...
'hosts' => [
[
...
'aws_credentials' => [\Aws\Credentials\CredentialProvider::class, 'defaultProvider'],
],
], LumenIf you work with Lumen, please register the service provider and configuration in $app->register(Cviebrock\LaravelElasticsearch\ServiceProvider::class);
$app->configure('elasticsearch'); Manually copy the configuration file to your application. UsageThe use Elasticsearch\ClientBuilder;
$data = [
'body' => [
'testField' => 'abc'
],
'index' => 'my_index',
'type' => 'my_type',
'id' => 'my_id',
];
$client = ClientBuilder::create()->build();
$return = $client->index($data); You can now replace those last two lines with simply: use Elasticsearch;
$return = Elasticsearch::index($data); That will run the command on the default connection. You can run a command on
any connection (see the $return = Elasticsearch::connection('connectionName')->index($data); Lumen users who wish to use Facades can do so by editing the
$app->withFacades(true, [
...
Cviebrock\LaravelElasticsearch\Facade::class => 'Elasticsearch',
...
]); Lumen users who aren't using facades will need to use dependency injection or the application container in order to get the ES service object: // using injection:
public function handle(\Cviebrock\LaravelElasticsearch\Manager $elasticsearch)
{
$elasticsearch->ping();
}
// using application container:
$elasticSearch = $this->app('elasticsearch'); Of course, dependency injection and the application container work for Laravel applications as well. Advanced UsageBecause the package is a wrapper around the official Elastic client, you can do pretty much anything with this package. Not only can you perform standard CRUD operations, but you can monitor the health of your Elastic cluster programmatically, back it up, or make changes to it. Some of these operations are done through "namespaced" commands, which this package happily supports. To grab statistics for an index: $stats = Elasticsearch::indices()->stats(['index' => 'my_index']);
$stats = Elasticsearch::nodes()->stats();
$stats = Elasticsearch::cluster()->stats(); To create and restore snapshots (read the Elastic docs about creating repository paths and plugins first): $response = Elasticsearch::snapshots()->create($params);
$response = Elasticsearch::snapshots()->restore($params); To delete whole indices (be careful!): $response = Elasticsearch::indices()->delete(['index' => 'my_index']); Please remember that this package is a thin wrapper around a large number of very sophisticated and well-documented Elastic features. Information about those features and the methods and parameters used to call them can be found in the Elastic documentation. Help with using them is available via the Elastic forums and on sites like Stack Overflow. Console commandsThis package also provides some useful console commands. Check if an index exists: php artisan laravel-elasticsearch:utils:index-exists <your_elasticsearch_index_name> Create an index: php artisan laravel-elasticsearch:utils:index-create <your_elasticsearch_index_name> Delete an index: php artisan laravel-elasticsearch:utils:index-delete <your_elasticsearch_index_name> Create or update index mapping: {
"body": {
"_source": {
"enabled": true
},
"properties": {
"id": {
"type": "keyword"
},
"property_1": {
"type": "text"
},
"property_2": {
"type": "text"
}
}
}
} php artisan laravel-elasticsearch:utils:index-create-or-update-mapping <your_elasticsearch_index_name> <json_mapping_absolute_file_path> Creates an alias: php artisan laravel-elasticsearch:utils:alias-create <your_elasticsearch_index_name> <your_elasticsearch_alias_name> Remove index from an alias: php artisan laravel-elasticsearch:utils:alias-remove-index <your_elasticsearch_index_name> <your_elasticsearch_alias_name> Switch index on alias (useful for zero-downtime release of the new index): php artisan laravel-elasticsearch:utils:alias-switch-index <your_NEW_elasticsearch_index_name> <your_OLD_elasticsearch_index_name> <your_elasticsearch_alias_name> Bugs, Suggestions, Contributions and SupportThanks to everyone who has contributed to this project! Special thanks to JetBrains for their Open Source License Program ... and the excellent PHPStorm IDE, of course! Please use Github for reporting bugs, and making comments or suggestions. See CONTRIBUTING.md for how to contribute changes. Copyright and Licenselaravel-elasticsearch was written by Colin Viebrock and is released under the MIT License. Copyright (c) 2015 Colin Viebrock |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论