miquido/elasticsearch-dbal

v1.0.0 2018-10-05 09:48 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:02:56 UTC


README

Build Maintainability Test Coverage MIT Licence

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');

贡献

欢迎提出拉取请求、修复错误和问题报告。在提出更改建议之前,请先通过提出问题来讨论您的更改。