Получение данных Elasticsearch в Magento 2: подробное руководство

Чтобы получить данные 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. Вы можете выбрать тот, который лучше всего соответствует вашим потребностям.