6

我需要 Elasticsearch 中与特定模式匹配的索引名称列表。使用 Kibana 做这件事我没有问题,但我根本不知道如何用 Elasticsearch-PHP 客户端做同样的事情。

例子:

Trying to get indices matching the name pattern "*.foo.bar"
With Kibana: GET /_cat/indices/*.foo.bar

有人知道吗?我在 Elasticsearch-PHP 文档中对此一无所知。

4

2 回答 2

6

我通过反复试验弄明白了。

获取与模式匹配的索引列表的方法是:

$client = ClientBuilder::create()->build();
$indices = $client->cat()->indices(array('index' => '*.foo.bar'));
于 2018-04-20T12:26:36.167 回答
1

在此响应 (7.2) 时的当前文档GET /_cat/indices/中,您可以找到您正在寻找的端点的文档。

因此,您可以使用以下代码获取索引:

$params = [
    // Example of another param
    'v' => true,
    // ...
    'index' => '*.foo.bar'
];

$indices = $client->cat()->indices($params);

文档没有明确说明index参数,但您可以看到索引是如何在CatNamespace::indices()方法定义中设置的。

public function indices(array $params = [])
{
    $index = $this->extractArgument($params, 'index');
    ...
    $endpoint->setIndex($index);
    ...
}
于 2019-11-12T22:05:15.907 回答