elegisandi/aws-elasticsearch-laravel

Laravel/Lumen 的 AWS Elasticsearch 服务

v1.5.1 2018-09-26 05:09 UTC

This package is auto-updated.

Last update: 2024-09-26 18:17:13 UTC


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:以下键值对的数组: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,要返回的总结果数 (最大为 10,000)

    $defaults:以下键值对的数组:sortordersize

    返回 Array

  • getDateRange($range, $format = null)

    $range:预定义的日期范围值:todayyesterdaylast-7-daysthis-monthlast-monthlast-2-monthslast-3-months

    $format 必须是有效的日期格式,默认为 null,将返回一个 DateTime 实例

    返回 Array

  • setAggregationDailyDateRanges($start, $end, $format = null)

    $format 必须是有效的日期格式,默认为 null,将返回一个 DateTime 实例

    返回 Array

  • defaultAggregationNames

    返回 Array

  • defaultIndex

    返回 String

  • defaultType

    返回 String

  • defaultTimeFilterField

    返回 String

  • 设置搜索查询过滤器(Collection $queryarray $bool_clauses = []$type = null

    返回 Array

  • 设置布尔查询子句(Collection $queryarray $properties$context$occurcallable $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 $mappingsarray $settings$index
  • 获取索引($index = null

    返回 Boolean

  • 删除索引($index

    返回 Array

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

限制

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

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

贡献

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

许可

MIT