elegisandi/ aws-elasticsearch-laravel
Laravel/Lumen 的 AWS Elasticsearch 服务
Requires
- php: >=7.0
- aws/aws-sdk-php: ~3.0
- elasticsearch/elasticsearch: ~6.0
- nesbot/carbon: ~1.20
README
Laravel/Lumen 的 AWS Elasticsearch 服务
注意: 此软件包仅提供搜索、聚合和索引事务。除此之外,您可以参考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
或asc
size
,要返回的总结果数 (最大为 10,000)
$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
-
defaultAggregationNames
返回
Array
-
defaultIndex
返回
String
-
defaultType
返回
String
-
defaultTimeFilterField
返回
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客户端的所有方法现在都受到支持。
限制
-
在 search 方法中支持的数据类型包括
- keyword
- text
- array
- integer
- boolean
- ip
贡献
首先打开一个issue来讨论潜在的变化/添加内容。