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();