1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/min_abo-larasearch

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 4.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 00:56 78e0647

Larasearch

Введение

Laravel — это быстрый и удобный поисковый проект. Открытые проекты развиваются благодаря обратной связи от пользователей, которые сталкиваются с проблемами и сообщают о них. Можно публиковать issue или самостоятельно решать проблемы. Вносить свой вклад в проект гораздо круче, чем жаловаться на него.

Никто не идеален, развитие открытых проектов невозможно без ошибок и их исправления.

Инструкция по установке

Установка

composer require abo/larasearch```

#### Использование
Публикация файла конфигурации проекта:
```php
php artisan vendor:publish --provider="Abo\Larasearch\LarasearchServiceProvider"

Если вам нужен скрипт для синхронизации данных, вы также можете выполнить следующую команду для его создания:

php artisan larasearch:sync {table_name}

Быстрый старт

Создание индекса данных:

Route::get('test/create',function(\Abo\Larasearch\EsBuilder $builder){
    $result = $builder->index('index')->type('type')->create([
        'key' => 'value',
    ]);
    dump($result);
});

Обновление индекса данных:

Route::get('test/create',function(\Abo\Larasearch\EsBuilder $builder){
    $result = $builder->index('index')->type('type')->update('id',[
        'key' => 'value2',
    ]);
    dump($result);
});

Удаление индекса:

Route::get('test/create',function(\Abo\Larasearch\EsBuilder $builder){
    $result = $builder->index('index')->type('type')->delete('id');
    dump($result);
});

Запрос индекса данных:

Route::get('test/create',function(\Abo\Larasearch\Builder $builder){
    $builder = $builder->index('index')->type('type');
    
    //SQL:select ... where id = 1 limit 1;
    $result = $builder->whereTerm('id',1)->first();    
});

Дополнительные функции

Добавление, изменение и удаление:

public function create(array $data, $id = null, $key = 'id'): stdClass

public function update($id, array $data): bool

public function delete($id)

Получение объекта запроса:

getElasticSearch()

Поля запроса

public function select($columns): self

Условия

Точное соответствие:

$builder->whereTerm('key',value)->first();
$builder->whereIn('key',[value1,value2])->first();

Нечёткое соответствие (разбиение на слова):

$builder->whereMatch('key',value)->first();

Диапазон соответствия:

$builder->whereBetween('key',[value1,value2])->first();

Комбинированный запрос:

//SQL:select ... where (key=1 or key=2) and key1=1

$result = $builder->where(function (Builder $Query) {
    $Query->whereTerm('key',1)->orWhereTerm('key',2)
})->whereTerm('key1',1)->get();

Разбивка на страницы

Смещение / ограничение:

$builder->limit(10)->get(); 
$builder->offset(10)->limit(10)->get(); 

Разбивка на страницы:

paginate(int $page, int $perPage = 15): Collection

Прокрутка:

scroll(string $scroll): self

Сортировка / агрегация

Сортировка по возрастанию / убыванию:

orderBy(string $field, $sort): self

Агрегация (ожидается улучшение):

aggBy($field, $type): self

Результаты

Получить всё:

get(): Collection

Получить первую запись:

first()

Найти по id (может потребоваться настройка маршрутизации при большом количестве индексов):

byId($id)

byIdOrFail($id): stdClass

Чанк:

chunk(callable $callback, $limit = 2000, $scroll = '10m')

Подсчёт:

delete($id)

Журнал:

#Но на самом деле, откройте config/larasearch.php и установите:
'open_log' => true,
Каждый запрос будет записываться.

//Включить журнал
$builder->enableQueryLog();

//Вывести все запросы
dump($build->getQueryLog());

//Последний запрос в журнале
dump($build->getLastQueryLog());

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/min_abo-larasearch.git
git@api.gitlife.ru:oschina-mirror/min_abo-larasearch.git
oschina-mirror
min_abo-larasearch
min_abo-larasearch
master