miquido / elasticsearch-dbal
观察库
v1.0.0
2018-10-05 09:48 UTC
Requires
- php: ^7.2
- ext-json: *
- miquido/data-structure: ^1.0
- ruflin/elastica: ^5.2.1|^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
- mockery/mockery: ^1.1
- phpstan/phpstan: ^0.10.3
- phpstan/phpstan-mockery: ^0.10.2
- phpstan/phpstan-phpunit: ^0.10.0
- phpunit/phpunit: ^7.0
- spatie/phpunit-snapshot-assertions: ^1.3
This package is not auto-updated.
Last update: 2024-09-15 05:02:56 UTC
README
Elasticsearch DBAL
为 https://github.com/ruflin/Elastica 提供包装器
安装
使用 Composer 安装此包
composer require miquido/elasticsearch-dbal
代码示例
初始化 DBAL 对象
Miquido\Elasticsearch\DBAL 需要 Elastica\Type 对象
<?php use Miquido\Elasticsearch\DBAL; $client = new \Elastica\Client(); $type = $client->getIndex('index_name')->getType('type_name'); $dbal = new DBAL($type);
计数文档
<?php $dbal->countAll(); // count all documents in the type $dbal->count(new \Elastica\Query(new \Elastica\Query\Terms('field_name', [1, 2, 3]))); // count documents matching query
搜索文档
<?php use Miquido\Elasticsearch\DBAL; $dbal = new DBAL($type); $query = new \Elastica\Query(new \Elastica\Query\Terms('field_name', [1, 2, 3])); $dbal->search($query); // returns 10 documents (default ElasticSearch setting) $dbal->searchAll($query); // returns all documents (uses scroll api) $dbal->findOne($query); $dbal->findByIds('id1', 'id2', 'id2');
SearchResult 和 Document 对象
search()、searchAll() 和 findByIds() 方法返回 Miquido\Elasticsearch\Result\SearchResultInterface 实例
findOne() 方法返回 Miquido\Elasticsearch\Document\DocumentInterface 实例
请查阅 miquido/data-structure 库以获取关于用于 Documents 对象的类的更多详细信息。
<?php use Miquido\Elasticsearch\DBAL; $dbal = new DBAL($type); $result = $dbal->search(new \Elastica\Query(new \Elastica\Query\MatchAll())); $result->count(); // returns number of documents in result $result->getTotalHits(); // returns number of documents matching the query $result->getTime(); // returns time of the query $result->getDocuments()->getAll(); // returns instances of Documents $result->getDocuments()->getData(); // returns instance of Miquido\DataStructure\Map\MapCollectionInterface $document = $dbal->findOne(new \Elastica\Query()); $document->getId(); // string $document->getData(); // returns instance of Miquido\DataStructure\Map\MapInterface
创建新文档
<?php use Miquido\Elasticsearch\DBAL; use Miquido\Elasticsearch\Document\Document; use Miquido\DataStructure\Map\Map; $dbal = new DBAL($type); $dbal->add(new Document( null /* or string if you want to choose your own ID */, new Map([ 'name' => 'John', 'surname' => 'Smith', 'age' => 40, ])) ); // you can also add many documents at once $dbal->bulkAdd($document1, $document2, ...);
更新文档
<?php use Miquido\Elasticsearch\DBAL; use Miquido\Elasticsearch\Document\Document; use Miquido\DataStructure\Map\Map; $dbal = new DBAL($type); // this method will only update 'age' field in document with ID 'documentId' $dbal->updatePatch(new Document('documentId', new Map([ 'age' => 41, ]))); // you can also add many documents at once $dbal->bulkUpdatePatch($document1, $document2, ...);
删除文档
<?php use Miquido\Elasticsearch\DBAL; $dbal = new DBAL($type); $dbal->deleteByIds('id1', 'id2', 'id3');
贡献
欢迎提出拉取请求、修复错误和问题报告。在提出更改建议之前,请先通过提出问题来讨论您的更改。