张卡特/elasticsearch

Laravel包,提供用于操作Elasticsearch的流畅API

1.0.5 2019-02-03 23:15 UTC

This package is auto-updated.

Last update: 2024-09-04 11:48:01 UTC


README

Latest Version on Packagist Total Downloads

安装

通过Composer

$ composer require carterzhou/elasticsearch

用法

首先,创建此类的一个实例。在这里,我们使用依赖注入让Laravel为我们创建和注入实例。

use CarterZhou\Elasticsearch\Client;

class TestController extends Controller
{
    protected $client;

    /**
     * TestController constructor.
     * @param Client $client
     */
    public function __construct(Client $client)
    {
        $this->client = $client;
    }
}
  • 进行简单搜索

然后我们可以使用search方法从Elasticsearch中获取数据。注意,我们可以链式调用match方法来添加过滤条件(类似于Eloquent的where方法)。

$url = $this->client->getHost() . '/indices-2019.01.28';

$this->client
    ->match('request', 'one-of-urls')
    ->match('request', 'field1 field2')
    ->setSize(500);

$this->client->search($url);

if ($this->client->hasDocuments()) {
    foreach ($this->client->getDocuments() as $document) {
        // Process your document here...
    }
}
  • 搜索所有文档。如果匹配的文档总数超过您设置的尺寸,您也可以多次与Elasticsearch通信来获取文档。
$url = $this->client->getHost() . '/indices-2019.01.28';

$this->client
    ->match('request', 'one-of-urls')
    ->match('request', 'field1 field2')
    ->setSize(500);

do {
    $this->client->search($url);

    if ($this->client->hasDocuments()) {

        foreach ($this->client->getDocuments() as $redirect) {
            // Process your document here...
        }
    }
} while ($this->client->hasMoreDocuments());

注意,这里我们使用了一个do while循环,因为至少会执行一次搜索。您不需要手动设置"from",因为search方法会在底层计算并维护包括"from"在内的属性。

警告:如果匹配的文档总数超过10000,则不应使用search方法,因为默认情况下,结果窗口使用"from"进行查询时为10000。在这种情况下,请改用scroll方法。

  • 使用滚动

如上所述,不要使用search方法来遍历大型结果集,因为通常不允许这样做。为了满足这种需求,您可以使用如下所示的scroll方法

$url = $this->client->getHost() . '/logstash*';

$this->client->matchAll()->setSize(500);

$this->client->scroll($url);

do {
    foreach ($this->client->getDocuments() as $document) {
        // Process your document here...
    }

    $this->client->scroll($url);

} while ($this->client->hasDocuments());

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅contributing.md以获取详细信息以及待办事项清单。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件而不是问题跟踪器联系作者。

许可证

许可证。请参阅许可证文件以获取更多信息。