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 )