Чтобы получить данные Elasticsearch в Magento 2, вы можете использовать различные подходы в зависимости от ваших конкретных требований. Вот несколько методов с примерами кода для получения данных Elasticsearch в Magento 2:
Метод 1: использование клиента Elasticsearch
use Magento\Framework\Search\Adapter\Mysql\TemporaryStorage;
use Magento\Framework\Search\Request\Dimension;
use Magento\Framework\Search\Request\QueryInterface as RequestQueryInterface;
use Magento\Framework\Search\RequestInterface;
use Magento\Framework\Search\SearchCriteriaBuilder;
use Magento\Framework\Search\SearchEngineInterface;
use Magento\Framework\Api\Search\SearchInterface;
use Magento\Framework\Api\Search\SearchResultInterface;
class ElasticsearchDataRetriever
{
private $searchCriteriaBuilder;
private $searchEngine;
private $search;
public function __construct(
SearchCriteriaBuilder $searchCriteriaBuilder,
SearchEngineInterface $searchEngine,
SearchInterface $search
) {
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
$this->searchEngine = $searchEngine;
$this->search = $search;
}
public function getElasticsearchData()
{
$searchCriteria = $this->searchCriteriaBuilder->create();
$searchCriteria->setRequestName('quick_search_container');
$searchResult = $this->search->search($searchCriteria);
return $searchResult->getItems();
}
}
Метод 2. Использование адаптера поиска Elasticsearch
use Magento\Elasticsearch\SearchAdapter\SearchAdapterInterface;
use Magento\Framework\Api\Search\SearchCriteriaInterface;
use Magento\Framework\Api\Search\SearchResultInterface;
class ElasticsearchDataRetriever
{
private $searchAdapter;
public function __construct(SearchAdapterInterface $searchAdapter)
{
$this->searchAdapter = $searchAdapter;
}
public function getElasticsearchData(SearchCriteriaInterface $searchCriteria): SearchResultInterface
{
return $this->searchAdapter->query($searchCriteria);
}
}
Метод 3. Использование поискового запроса Elasticsearch
use Magento\Elasticsearch\SearchAdapter\QueryContainer\QueryContainerInterface;
use Magento\Framework\Api\Search\SearchCriteriaInterface;
use Magento\Framework\Api\Search\SearchResultInterface;
class ElasticsearchDataRetriever
{
private $queryContainer;
public function __construct(QueryContainerInterface $queryContainer)
{
$this->queryContainer = $queryContainer;
}
public function getElasticsearchData(SearchCriteriaInterface $searchCriteria): SearchResultInterface
{
$searchQuery = $this->queryContainer->getQuery($searchCriteria);
// Execute the search query and retrieve the result
// ...
}
}
Это всего лишь несколько способов получения данных Elasticsearch в Magento 2. Вы можете выбрать тот, который лучше всего соответствует вашим потребностям.