glodzienski/phenix

AWS Elasticsearch Service for Laravel/Lumen

1.0.0 2020-02-06 12:28 UTC

README

AWS Elasticsearch Service for Laravel/Lumen

注意:此软件包仅提供搜索、聚合和索引事务。除此之外,您可以参考Elasticsearch官方文档注意:此软件包基于elegisandi/aws-elasticsearch-laravel

安装

composer require glodzienski/aws-elasticsearch-laravel

Laravel/Lumen集成

  • 将服务提供者添加到您的 config/app.php 提供者中

    glodzienski\AWSElasticsearchService\ElasticSearchServiceProvider::class
    
  • 将外观添加到您的 config/app.php 别名中

    'ElasticSearch' => glodzienski\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=glodzienski\\AWSElasticsearchService\\ElasticSearchServiceProvider

对于Lumen

  • 将服务提供者注册到您的 bootstrap/app.php

    $app->register(glodzienski\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 : 包含以下键值对的数组:fromsizesort

    $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,值是descasc
    • size,要返回的总结果数(最大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

  • defaultAggregationNames

    返回 Array

  • defaultIndex

    返回String

  • defaultType

    返回String

  • defaultTimeFilterField

    返回String

  • setSearchQueryFilters(Collection $query, array $bool_clauses = [], $type = null)

    返回 Array

  • setBoolQueryClause(Collection $query, array $properties, $context, $occur, callable $callback = null)

    返回 Array

  • getMappingPropertiesByDataType(Collection $properties, $data_type)

    返回 Array

  • getMappingProperties($type = null)

    返回Collection

  • indexDocument(array $body, $type = null, $index = null)

    返回 Array

  • getDocument($id, $type, $index)

    返回 Array

  • updateDocument(array $fields, $id, $type = null, $index = null)

    返回 Array

  • deleteDocument($id, $type = null, $index = null)

    返回 Array

  • getSettings($index = null)

    返回 Array

  • updateSettings(array $settings, $index)

    返回 Array

  • getMappings($index, $type)

    返回 Array

  • updateMappings(array $properties, $type, $index)

    返回 Array

  • createIndex(array $mappings, array $settings, $index)
  • getIndex($index = null)

    返回 Boolean

  • deleteIndex($index)

    返回 Array

注意:Elasticsearch 客户端的所有方法现在都已支持。

限制

  • search 方法中支持的数据类型有

    • keyword
    • text
    • array
    • integer
    • boolean
    • ip

贡献

首先打开一个 issue 来讨论潜在的变化/添加。

许可证

MIT