PHP code example of citizenzet / elastic-query-builder

1. Go to this page and download the library: Download citizenzet/elastic-query-builder library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

citizenzet / elastic-query-builder example snippets



        $client = ClientBuilder::create()->setHosts(['localhost:9200'])->build();
        $query = new QueryBuilder();
        $query->setIndex("_my_index");
        $query->setSize(10);
        $query->setFrom(0);
        
        //Выбор полей
        $query->setSource(['title', "categories", 'features_values.Материал рамы']);  
        
        //Запрос
        // поиск по строке
        $query->setQuery((new MultiMatchQuery())->setQuery("Oko Plus")->setFields(['title'])->setFuzziness(1)); 
        
        //ФИльтрация
        $query->addFilter(
            (new NestedQuery())->setNestedPath("features_values")
                ->should()
                ->addQuery((new TermsQuery())->setField("features_values.Материал рамы")->setValues(["сталь"]))
                ->addQuery((new TermsQuery())->setField("features_values.Сиденье")->setValues(["без спинки", "со спинкой"]))
        );
        $query->addFilter((new TermsQuery())->setField("features_values.Внутренний материал")->setValues(["байка"]));
        $query->addFilter((new TermsQuery())->setField("categories")->setValues([2879]));
        //Сортировка
        $query->addSorting("_id", "desc");
        
        //Агрегации
        // сумма
        $query->addAggregation((new SumAggregation("test_sum"))->setField('count')); 
        // максимальное значение
        $query->addAggregation((new MaxAggregation("max_price"))->setField('price')); 
         // минимальное значение
        $query->addAggregation((new MinAggregation("max_price"))->setField('price')); 
        
        //вложенные (не тестировано!!!)
        $query->addAggregation((new NestedAggregation("features"))->setNestedPath('features')->setAggregation(
            (new TermsAggregation("fffff"))->setField("features.1")->setSize(20))
        );
        
        $response = $client->search($query->build());
        
        $r = Response::instance($response);
        $productCodes = $r->getSourceKeyAsArray("code");
        $productIds = $r->getIds();