logcomex / aws-elasticsearch-laravel
AWS Elasticsearch 服务用于 Laravel/Lumen
Requires
- php: >=7.0
- aws/aws-sdk-php: ~3.0
- elasticsearch/elasticsearch: ~6.0
- nesbot/carbon: ~1.20
README
AWS Elasticsearch 服务用于 Laravel/Lumen
注意: 此包仅提供搜索、聚合和索引事务。除此之外,您可以参考 Elasticsearch 的官方文档。
安装
composer require elegisandi/aws-elasticsearch-laravel
Laravel/Lumen 集成
-
将服务提供者添加到您的
config/app.php提供者elegisandi\AWSElasticsearchService\ElasticSearchServiceProvider::class -
将外观添加到您的
config/app.php别名'ElasticSearch' => elegisandi\AWSElasticsearchService\Facades\ElasticSearch::class -
在您的
.env文件中设置 AWS 凭据和 Elasticsearch 配置AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_REGION ELASTICSEARCH_ENDPOINT ELASTICSEARCH_PORT ELASTICSEARCH_SHARDS ELASTICSEARCH_REPLICAS ELASTICSEARCH_DEFAULT_INDEX ELASTICSEARCH_DEFAULT_TYPE ELASTICSEARCH_DEFAULT_TIME_FILTER_FIELD如果您已经在使用 aws elasticsearch 服务,请设置
AWS_ELASTICSEARCH_SERVICE=true
如果您想配置 Elasticsearch 映射、设置和/或默认类型和索引,只需运行
php artisan vendor:publish --provider=elegisandi\\AWSElasticsearchService\\ElasticSearchServiceProvider
Lumen 专用
-
将服务提供者注册到您的
bootstrap/app.php$app->register(elegisandi\AWSElasticsearchService\ElasticSearchServiceProvider::class);
基本用法
使用外观
<?php
namespace App;
use ElasticSearch;
public function index() {
extract(ElasticSearch::setSearchParams(request()));
$clicks = [];
$total = 0;
if ($hits = ElasticSearch::search($query, $options, $date_range)) {
$clicks = $hits['hits']['hits'];
$total = $hits['hits']['total'];
}
}
Lumen 专用
<?php
namespace App;
public function index() {
extract(app('elasticsearch')->setSearchParams(request()));
$clicks = [];
$total = 0;
if ($hits = app('elasticsearch')->search($query, $options, $date_range)) {
$clicks = $hits['hits']['hits'];
$total = $hits['hits']['total'];
}
}
控制台命令
-
创建索引 (创建默认索引)
php artisan elasticsearch:create-index要重置现有索引,
php artisan elasticsearch:create-index --reset -
更新索引映射 (更新默认索引映射)
php artisan elasticsearch:update-index-mapping仅支持新属性更新。
可用方法
-
aggregations(
array $aggs,array $query = [],array $options = [],$type,$index)$aggs : 必须遵循 Elasticsearch 文档 中指定的结构。
$query : 查看
search方法$query参数$options : 查看
search方法$options参数返回
Array -
search(
array $query = [],array $options = [],array $range = [],$type,$index)$query : 任何可用属性的键值对数组
$options : 键值对数组,包含以下内容:
from,size,sort$range : 范围查询 的数组表示
返回
Array -
count(
array $query = [],array $range = [],$type,$index)a (语法糖) 方法,用于搜索零次命中结果
返回
Int -
setSearchParams(
Request $request,array $defaults = [],$type)这是一种可选且常规的方法,通过查询字符串设置搜索参数
$request :
\Illuminate\Http\Request的实例,使用了查询变量- range,请参阅 getDateRange 方法
start,一个有效的日期字符串end,一个有效的日期字符串sort,一个映射属性order,值是desc或ascsize,要返回的总结果数 (最多 10000)
$defaults : 键值对数组,包含以下内容:
sort, order, size返回
Array -
getDateRange(
$range,$format = null)$range : 预定义的日期范围值:
today, yesterday, last-7-days, this-month, last-month, last-2-months, last-3-months$format 必须是有效的日期格式,默认为
null,将返回一个 DateTime 实例返回
Array -
setAggregationDailyDateRanges(
$start,$end,$format = null)$format 必须是有效的日期格式,默认为
null,将返回一个 DateTime 实例返回
Array -
默认聚合名称
返回
Array -
默认索引
返回
String -
默认类型
返回
String -
默认时间过滤器字段
返回
String -
设置搜索查询过滤器(
Collection $query,array $bool_clauses = [],$type = null)返回
Array -
设置布尔查询条件(
Collection $query,array $properties,$context,$occur,callable $callback = null)返回
Array -
根据数据类型获取映射属性(
Collection $properties,$data_type)返回
Array -
获取映射属性(
$type = null)返回
Collection -
索引文档(
array $body,$type = null,$index = null)返回
Array -
获取文档(
$id,$type,$index)返回
Array -
更新文档(
array $fields,$id,$type = null,$index = null)返回
Array -
删除文档(
$id,$type = null,$index = null)返回
Array -
获取设置(
$index = null)返回
Array -
更新设置(
array $settings,$index)返回
Array -
获取映射(
$index, $type)返回
Array -
更新映射(
array $properties,$type,$index)返回
Array -
创建索引(
array $mappings,array $settings,$index) -
获取索引(
$index = null)返回
Boolean -
删除索引(
$index)返回
Array
注意:现在支持 Elasticsearch 客户端的所有方法。
限制
-
在 搜索 方法中支持的数据类型有
- keyword
- text
- array
- integer
- boolean
- ip
贡献
首先打开一个问题来讨论潜在的更改/添加。