All Projects → crcms → Elasticsearch

crcms / Elasticsearch

Licence: mit
Use SQL statements to query elasticsearch

Projects that are alternatives of or similar to Elasticsearch

Ebean
Ebean ORM
Stars: ✭ 1,172 (+1095.92%)
Mutual labels:  sql, orm, elasticsearch
Elasticsearch
The missing elasticsearch ORM for Laravel, Lumen and Native php applications
Stars: ✭ 375 (+282.65%)
Mutual labels:  orm, elasticsearch, laravel
Laravel Db Profiler
Database Profiler for Laravel Web and Console Applications.
Stars: ✭ 141 (+43.88%)
Mutual labels:  sql, query, laravel
Walkable
A Clojure(script) SQL library for building APIs: Datomic® (GraphQL-ish) pull syntax, data driven configuration, dynamic filtering with relations in mind
Stars: ✭ 384 (+291.84%)
Mutual labels:  sql, orm, query
Baby squeel
🐷 An expressive query DSL for Active Record 4 and 5
Stars: ✭ 362 (+269.39%)
Mutual labels:  sql, orm, query
Gorose
GoRose(go orm), a mini database ORM for golang, which inspired by the famous php framwork laravle's eloquent. It will be friendly for php developer and python or ruby developer. Currently provides six major database drivers: mysql,sqlite3,postgres,oracle,mssql, Clickhouse.
Stars: ✭ 947 (+866.33%)
Mutual labels:  sql, orm, laravel
Nymph
Data objects for JavaScript and PHP.
Stars: ✭ 97 (-1.02%)
Mutual labels:  sql, orm
Elasticquent
Maps Laravel Eloquent models to Elasticsearch types
Stars: ✭ 1,172 (+1095.92%)
Mutual labels:  elasticsearch, laravel
Purescript Selda
A type-safe, high-level SQL library for PureScript
Stars: ✭ 72 (-26.53%)
Mutual labels:  sql, query
Queryql
Easily add filtering, sorting, and pagination to your Node.js REST API through your old friend: the query string!
Stars: ✭ 76 (-22.45%)
Mutual labels:  orm, query
Pqt
Postgres schema definition, sql/go, code generation package.
Stars: ✭ 65 (-33.67%)
Mutual labels:  sql, orm
Elastic Scout Driver
Elasticsearch driver for Laravel Scout
Stars: ✭ 74 (-24.49%)
Mutual labels:  elasticsearch, laravel
Elasticsql
ElasticSQL package converts SQL to ElasticSearch DSL
Stars: ✭ 77 (-21.43%)
Mutual labels:  sql, elasticsearch
Laravel Optimistic Locking
Adds optimistic locking feature to eloquent models.
Stars: ✭ 71 (-27.55%)
Mutual labels:  orm, laravel
Dbx
A neat codegen-based database wrapper written in Go
Stars: ✭ 68 (-30.61%)
Mutual labels:  sql, orm
Examples Orms
Sample uses of CockroachDB with popular ORMs
Stars: ✭ 65 (-33.67%)
Mutual labels:  sql, orm
Laravel Log To Db
Custom Laravel and Lumen 5.6+ Log channel handler that can store log events to SQL or MongoDB databases. Uses Laravel/Monolog native logging functionality.
Stars: ✭ 76 (-22.45%)
Mutual labels:  sql, laravel
Evolutility Server Node
Model-driven REST or GraphQL backend for CRUD and more, written in Javascript, using Node.js, Express, and PostgreSQL.
Stars: ✭ 84 (-14.29%)
Mutual labels:  sql, orm
Marlow
golang generator for type-safe sql api constructs
Stars: ✭ 83 (-15.31%)
Mutual labels:  sql, orm
Sequelize
Sequelize module for Nest framework (node.js) 🍈
Stars: ✭ 88 (-10.2%)
Mutual labels:  sql, orm

Crcms Elasticsearch

Latest Stable Version License StyleCI

Version Matrix

Elasticsearch Version crcms/elasticsearch Branch
>= 7.0 master(beta unstable)
>= 6.0 1.*
>= 5.0, < 6.0 0.*

Install

You can install the package via composer:

composer require crcms/elasticsearch

Please install if you want to use the latest version dev-master

Use

Non-Laravel framework

// select config path
$config = require 'search.php';
$builder = Factory::builder($config);

Laravel

Modify config / app.php If the version is less <= 5.5

'providers' => [
    CrCms\ElasticSearch\LaravelServiceProvider::class,
]

If you'd like to make configuration changes in the configuration file you can pubish it with the following Aritsan command:

php artisan vendor:publish --provider="CrCms\ElasticSearch\LaravelServiceProvider"

Quickstart

Create

$builder->index('index')->type('type')->create([
    'key' => 'value'
]);

// return a collection
$builder->index('index')->type('type')->createCollection([
    'key' => 'value'
]);

Update

$builder->index('index')->type('type')->update([
    'key' => 'value1'
]);

Delete

$builder->index('index')->type('type')->delete($result->_id);

Select

$builder = $builder->index('index')->type('type');
	
//SQL:select ... where id = 1 limit 1;
$result = $builder->whereTerm('id',1)->first();

//SQL:select ... where (key=1 or key=2) and key1=1
$result = $builder->where(function (Query $inQuery) {
    $inQuery->whereTerm('key',1)->orWhereTerm('key',2)
})->whereTerm('key1',1)->get();

More

skip / take

$builder->take(10)->get(); // or limit(10)
$builder->offset(10)->take(10)->get(); // or skip(10)

term query

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

match query

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

range query

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

where in query

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

logic query

$builder->whereTerm('key',value)->orWhereTerm('key2',value)->first();

nested query

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

Available conditions

public function select($columns): self
public function where($column, $operator = null, $value = null, $leaf = 'term', $boolean = 'and'): self
public function orWhere($field, $operator = null, $value = null, $leaf = 'term'): self
public function whereMatch($field, $value, $boolean = 'and'): self
public function orWhereMatch($field, $value, $boolean = 'and'): self
public function whereTerm($field, $value, $boolean = 'and'): self
public function whereIn($field, array $value)
public function orWhereIn($field, array $value)
public function orWhereTerm($field, $value, $boolean = 'or'): self
public function whereRange($field, $operator = null, $value = null, $boolean = 'and'): self
public function orWhereRange($field, $operator = null, $value = null): self
public function whereBetween($field, array $values, $boolean = 'and'): self
public function whereNotBetween($field, array $values): self
public function orWhereNotBetween(string $field, array $values): self
public function whereExists($field, $boolean = 'and'): self
public function whereNotExists($field, $boolean = 'and'): self
public function orWhereBetween($field, array $values): self
public function orderBy(string $field, $sort): self
public function scroll(string $scroll): self
public function aggBy($field, $type): self
public function select($columns): self

Result Method

public function get(): Collection
public function paginate(int $page, int $perPage = 15): Collection
public function first()
public function byId($id)
public function byIdOrFail($id): stdClass
public function chunk(callable $callback, $limit = 2000, $scroll = '10m')
public function create(array $data, $id = null, $key = 'id'): stdClass
public function update($id, array $data): bool
public function delete($id)
public function count(): int

Log

//open log
$builder->enableQueryLog();

//all query log
dump($build->getQueryLog());

//last query log
dump($build->getLastQueryLog());

Elastisearch object

getElasticSearch() // or search()

If you want to expand more, you can use this method, call https://github.com/elastic/elasticsearch-php

Other

For more examples, please see test cases https://github.com/crcms/elasticsearch/blob/master/tests/BuildTest.php

License

MIT license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].