<?xml version="1.0"?>
<!--
/**
* @author Amasty Team
* @copyright Copyright (c) 2022 Amasty (https://www.amasty.com)
* @package Improved Layered Navigation GraphQl for Magento 2 (System)
*/-->

<requests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="urn:magento:framework:Search/etc/search_request.xsd">
    <request query="graphql_product_search_with_aggregation" index="catalogsearch_fulltext">
        <dimensions>
            <dimension name="scope" value="default"/>
        </dimensions>
        <queries>
            <query xsi:type="boolQuery" name="graphql_product_search_with_aggregation" boost="1">
                <queryReference clause="must" ref="stock_status"/>
                <queryReference clause="must" ref="rating_summary"/>
                <queryReference clause="must" ref="am_is_new"/>
                <queryReference clause="must" ref="am_on_sale"/>
            </query>
            <query xsi:type="filteredQuery" name="stock_status">
                <filterReference clause="must" ref="stock_status_filter"/>
            </query>
            <query xsi:type="filteredQuery" name="rating_summary">
                <filterReference clause="must" ref="rating_summary_filter"/>
            </query>
            <query xsi:type="filteredQuery" name="am_is_new">
                <filterReference clause="must" ref="am_is_new_filter"/>
            </query>
            <query xsi:type="filteredQuery" name="am_on_sale">
                <filterReference clause="must" ref="am_on_sale_filter"/>
            </query>
        </queries>
        <filters>
            <filter xsi:type="termFilter" name="stock_status_filter" field="stock_status" value="$stock_status$"/>
            <filter xsi:type="rangeFilter" name="rating_summary_filter" field="rating_summary" from="$rating_summary$"/>
            <filter xsi:type="rangeFilter" name="am_is_new_filter" field="am_is_new" from="$am_is_new$"/>
            <filter xsi:type="rangeFilter" name="am_on_sale_filter" field="am_on_sale" from="$am_on_sale$"/>
        </filters>
        <aggregations>
            <bucket name="stock_status_bucket" field="stock_status" xsi:type="termBucket">
                <metrics>
                    <metric type="count"/>
                </metrics>
            </bucket>
            <bucket name="rating_summary_bucket" field="rating_summary" xsi:type="termBucket">
                <metrics>
                    <metric type="count"/>
                </metrics>
            </bucket>
            <bucket name="am_is_new_bucket" field="am_is_new" xsi:type="termBucket">
                <metrics>
                    <metric type="count"/>
                </metrics>
            </bucket>
            <bucket name="am_on_sale_bucket" field="am_on_sale" xsi:type="termBucket">
                <metrics>
                    <metric type="count"/>
                </metrics>
            </bucket>
        </aggregations>
        <from>0</from>
        <size>10000</size>
    </request>
    <request query="graphql_product_search" index="catalogsearch_fulltext">
        <dimensions>
            <dimension name="scope" value="default"/>
        </dimensions>
        <queries>
            <query xsi:type="boolQuery" name="graphql_product_search" boost="1">
                <queryReference clause="must" ref="stock_status"/>
                <queryReference clause="must" ref="rating_summary"/>
                <queryReference clause="must" ref="am_is_new"/>
                <queryReference clause="must" ref="am_on_sale"/>
            </query>
            <query xsi:type="filteredQuery" name="stock_status">
                <filterReference clause="must" ref="stock_status_filter"/>
            </query>
            <query xsi:type="filteredQuery" name="rating_summary">
                <filterReference clause="must" ref="rating_summary_filter"/>
            </query>
            <query xsi:type="filteredQuery" name="am_is_new">
                <filterReference clause="must" ref="am_is_new_filter"/>
            </query>
            <query xsi:type="filteredQuery" name="am_on_sale">
                <filterReference clause="must" ref="am_on_sale_filter"/>
            </query>
        </queries>
        <filters>
            <filter xsi:type="termFilter" name="stock_status_filter" field="stock_status" value="$stock_status$"/>
            <filter xsi:type="rangeFilter" name="rating_summary_filter" field="rating_summary" from="$rating_summary$"/>
            <filter xsi:type="rangeFilter" name="am_is_new_filter" field="am_is_new" from="$am_is_new$"/>
            <filter xsi:type="rangeFilter" name="am_on_sale_filter" field="am_on_sale" from="$am_on_sale$"/>
        </filters>
        <from>0</from>
        <size>10000</size>
    </request>
</requests>
