Иконка ресурса

Модуль Модуль для работы с эластиком | bitrix_elastic v1.0.0

Построение высоконагруженного каталога товаров с использованием Elasticsearch
Тип файлов Битрикс
Файлы в формате модуля (/bitrix/modules)
Установка на хостинг
Распаковываем архив в папку /bitrix/modules и устанавливаем через админ панель
Модуль для работы с эластиком ( 1С-Битрикс)

Основная идея в том, чтобы использовать данный модуль для построения высоконагруженного каталога товаров с использованием Elasticsearch.

Сейчас реализовано:
  • Установка/удаление модуля
  • Выборка документов по фильтру
  • Агрегации (планируется использование в умном фильтре)
  • Создание индекса и индексация
Бэклог:
  • Страница в админ. панели Битрикса для возможности формирования индекса по инфоблокам
Пример использования:
PHP:
class ClothIndex extends Index
{
    public function indexName(): string
    {
        return 'cloth';
    }

    public function settings(): array
    {
        return [
            'settings' => [
                'index.max_result_window' => 500000,
                'index.max_inner_result_window' => 100000,
                'index.number_of_shards' => 1,
                'index.number_of_replicas' => 0,
            ],
            'mappings' => [
                'properties' => [
                    'cloth_id' => ['type' => 'keyword'],
                    'section_id' => ['type' => 'keyword'],
                    'code' => ['type' => 'text'],
                    'artnumber' => ['type' => 'text']
                ]
            ]
        ];
    }

    public function indexing(): void
    {
        $allElements = ... //Получаем элементы

        foreach (array_chunk($allElements, 100) as $elements) {
            $bulk = [];

            foreach ($elements as $element) {
                $bulk[] = ['index' => ['_id' => $element['ID']]];
                $bulk[] = json_encode([
                    'cloth_id' => $element['ID'],
                    'section_id' => $element['SECTION_ID'],
                    'code' => $element['CODE'],
                    'artnumber' => $element['ARTICLE']
                ]);
            }

            if ($bulk) {
                $this->bulk($bulk);
            }
        }
    }
}

Для создания индекса вызываем:

PHP:
$index = new ClothIndex();
$index->create();

Для индексации вызываем:

PHP:
$index = new ClothIndex();
$index->indexing();

Пароль на архив:
Сверху Снизу