Elasticsearch PHP - это официальный клиент для взаимодействия с Elasticsearch, написанный на PHP. В этом руководстве рассмотрены основные методы, предоставляемые клиентом, и приведены примеры их использования.
Установка
Для установки Elasticsearch PHP клиента выполните следующую команду:
composer require elasticsearch/elasticsearch
Создание клиента
Для взаимодействия с Elasticsearch сначала необходимо создать экземпляр клиента:
require 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()->build();
Метод index
Метод index
используется для добавления или обновления документа в индексе.
Пример:
$params = [
'index' => 'my_index',
'id' => 'my_id',
'body' => ['testField' => 'abc']
];
$response = $client->index($params);
print_r($response);
Метод get
Метод get
используется для получения документа по его идентификатору.
Пример:
$params = [
'index' => 'my_index',
'id' => 'my_id'
];
$response = $client->get($params);
print_r($response);
Метод search
Метод search
используется для поиска документов в индексе.
Пример:
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'match' => [
'testField' => 'abc'
]
]
]
];
$response = $client->search($params);
print_r($response);
Метод delete
Метод delete
используется для удаления документа по его идентификатору.
Пример:
$params = [
'index' => 'my_index',
'id' => 'my_id'
];
$response = $client->delete($params);
print_r($response);
Метод bulk
Метод bulk
используется для выполнения нескольких операций в одном запросе. Это может быть полезно для массового добавления, обновления или удаления документов.
Пример:
$params = [
'body' => [
[
'index' => [
'_index' => 'my_index',
'_id' => 'my_id_1'
]
],
[
'testField' => 'abc'
],
[
'delete' => [
'_index' => 'my_index',
'_id' => 'my_id_2'
]
]
]
];
$response = $client->bulk($params);
print_r($response);
Метод update
Метод update
используется для частичного обновления документа.
Пример:
$params = [
'index' => 'my_index',
'id' => 'my_id',
'body' => [
'doc' => [
'testField' => 'xyz'
]
]
];
$response = $client->update($params);
print_r($response);
Метод mget
Метод mget
используется для получения нескольких документов по их идентификаторам.
Пример:
$params = [
'body' => [
'ids' => ['my_id_1', 'my_id_2']
]
];
$response = $client->mget($params);
print_r($response);
Метод msearch
Метод msearch
используется для выполнения нескольких поисковых запросов в одном запросе.
Пример:
$params = [
'body' => [
[],
[
'query' => [
'match' => [
'testField' => 'abc'
]
]
],
[],
[
'query' => [
'match' => [
'testField' => 'xyz'
]
]
]
]
];
$response = $client->msearch($params);
print_r($response);
Метод scroll
Метод scroll
используется для прокрутки больших наборов данных, возвращаемых поисковым запросом.
Пример:
$params = [
'index' => 'my_index',
'scroll' => '1m',
'size' => 100,
'body' => [
'query' => [
'match' => [
'testField' => 'abc'
]
]
]
];
$response = $client->search($params);
$scroll_id = $response['_scroll_id'];
while (isset($response['hits']['hits']) && count($response['hits']['hits']) > 0) {
$response = $client->scroll([
'scroll_id' => $scroll_id,
'scroll' => '1m'
]);
$scroll_id = $response['_scroll_id'];
print_r($response);
}
Метод clearScroll
Метод clearScroll
используется для завершения прокрутки и очистки ресурсов.
Пример:
$params = [
'scroll_id' => $scroll_id
];
$response = $client->clearScroll($params);
print_r($response);
Метод putMapping
Метод putMapping
используется для добавления или обновления схемы индекса.
Пример:
$params = [
'index' => 'my_index',
'body' => [
'properties' => [
'testField' => [
'type' => 'text'
]
]
]
];
$response = $client->indices()->putMapping($params);
print_r($response);
Метод getMapping
Метод getMapping
используется для получения схемы индекса.
Пример:
$params = [
'index' => 'my_index'
];
$response = $client->indices()->getMapping($params);
print_r($response);
Метод create
Метод create
используется для создания нового документа. В отличие от index
, этот метод вернет ошибку, если документ с таким идентификатором уже существует.
Пример:
$params = [
'index' => 'my_index',
'id' => 'my_id',
'body' => ['testField' => 'abc']
];
$response = $client->create($params);
print_r($response);
Метод deleteByQuery
Метод deleteByQuery
используется для удаления документов, соответствующих заданному запросу.
Пример:
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'match' => [
'testField' => 'abc'
]
]
]
];
$response = $client->deleteByQuery($params);
print_r($response);
Метод reindex
Метод reindex
используется для копирования документов из одного индекса в другой.
Пример:
$params = [
'body' => [
'source' => [
'index' => 'old_index'
],
'dest' => [
'index' => 'new_index'
]
]
];
$response = $client->reindex($params);
print_r($response);
Метод ping
Метод ping
используется для проверки доступности кластера Elasticsearch.
Пример:
$response = $client->ping();
if ($response) {
echo "Cluster is up!";
} else {
echo "Cluster is down!";
}
Метод clusterHealth
Метод clusterHealth
используется для получения состояния кластера.
Пример:
$response = $client->cluster()->health();
print_r($response);
Заключение
Elasticsearch PHP клиент предоставляет мощный и удобный интерфейс для взаимодействия с Elasticsearch. В этом руководстве были рассмотрены основные методы, которые помогут вам эффективно работать с данными в Elasticsearch.