123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- -->
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
- <xs:complexType name="request">
- <xs:sequence>
- <xs:element type="dimensions" name="dimensions" minOccurs="0" maxOccurs="1"/>
- <xs:element type="queries" name="queries" minOccurs="1" maxOccurs="1">
- <xs:key name="queryName">
- <xs:selector xpath="query" />
- <xs:field xpath="@name" />
- </xs:key>
- </xs:element>
- <xs:element type="filters" name="filters" minOccurs="0" maxOccurs="1">
- <xs:key name="filterName">
- <xs:selector xpath="filter" />
- <xs:field xpath="@name" />
- </xs:key>
- </xs:element>
- <xs:element type="aggregations" name="aggregations" minOccurs="0" maxOccurs="1">
- <xs:key name="aggregationName">
- <xs:selector xpath="bucket" />
- <xs:field xpath="@name" />
- </xs:key>
- </xs:element>
- <xs:element type="xs:string" name="from" />
- <xs:element type="xs:string" name="size" />
- </xs:sequence>
- <xs:attribute type="xs:string" name="query" use="required" />
- <xs:attribute type="xs:string" name="index" use="required" />
- </xs:complexType>
- <xs:attribute name="clause">
- <xs:annotation>
- <xs:documentation>Specifies how clauses are to occur in matching documents.</xs:documentation>
- </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="must" />
- <xs:enumeration value="should" />
- <xs:enumeration value="not" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- <xs:complexType name="dimension">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute type="xs:string" name="name" use="required" />
- <xs:attribute type="xs:string" name="value" use="required" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="dimensions">
- <xs:sequence>
- <xs:element type="dimension" name="dimension" />
- </xs:sequence>
- </xs:complexType>
- <!-- Queries Type hierarchy -->
- <xs:complexType name="queries">
- <xs:annotation>
- <xs:documentation>Definition of queries</xs:documentation>
- </xs:annotation>
- <xs:sequence>
- <xs:element type="query" name="query" maxOccurs="unbounded" minOccurs="1" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="query" abstract="true">
- <xs:attribute type="xs:string" name="name" use="required" />
- <xs:attribute type="xs:byte" name="boost" use="optional" default="1" />
- </xs:complexType>
- <xs:complexType name="boolQuery">
- <xs:complexContent>
- <xs:extension base="query">
- <xs:sequence>
- <xs:element name="queryReference" minOccurs="1" maxOccurs="unbounded">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="queryReference" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="matchQuery">
- <xs:complexContent>
- <xs:extension base="query">
- <xs:sequence>
- <xs:element type="match" name="match" minOccurs="1" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute type="xs:string" name="value" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="filteredQuery">
- <xs:complexContent>
- <xs:extension base="query">
- <xs:choice minOccurs="1" maxOccurs="1">
- <xs:element type="filterReference" name="filterReference" />
- <xs:element type="queryReference" name="queryReference" />
- </xs:choice>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <!--
- Filters Type hierarchy
- Example:
- <filter xsi:type="termFilter" name="promoted_documents_boost" field="promoted" value="1" />
- <filter xsi:type="rangeFilter" name="price_name" from="10" to="100" />
- <filter xsi:type="boolFilter" name="price_name">
- <filterReference clause="must" name="promoted_documents_filter" />
- </filter
- -->
- <xs:complexType name="filters">
- <xs:sequence>
- <xs:element type="filter" name="filter" maxOccurs="unbounded" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="filter" abstract="true">
- <xs:attribute type="xs:string" name="name" use="required" />
- </xs:complexType>
- <xs:complexType name="termFilter">
- <xs:complexContent>
- <xs:extension base="filter">
- <xs:attribute type="xs:string" name="field" use="required" />
- <xs:attribute type="xs:string" name="value" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="wildcardFilter">
- <xs:complexContent>
- <xs:extension base="filter">
- <xs:attribute type="xs:string" name="field" use="required" />
- <xs:attribute type="xs:string" name="value" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="rangeFilter">
- <xs:complexContent>
- <xs:extension base="filter">
- <xs:attribute type="xs:string" name="field" use="required" />
- <xs:attribute type="xs:string" name="from" use="optional" />
- <xs:attribute type="xs:string" name="to" use="optional" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="boolFilter">
- <xs:complexContent>
- <xs:extension base="filter">
- <xs:sequence>
- <xs:element type="filterReference" name="filterReference" minOccurs="1" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
- <!--
- Buckets Type hierarchy
- Example:
- <bucket xsi:type="termBucket" name="category_bucket" field="category">
- <bucket xsi:type="rangeBucket" name="price_bucket" field="price">
- -->
- <xs:complexType name="bucket" abstract="true">
- <xs:sequence>
- <xs:element type="metrics" name="metrics" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute type="xs:string" name="name" use="required" />
- <xs:attribute type="xs:string" name="field" use="required" />
- </xs:complexType>
- <xs:complexType name="termBucket">
- <xs:complexContent>
- <xs:extension base="bucket">
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="rangeBucket">
- <xs:complexContent>
- <xs:extension base="bucket">
- <xs:sequence>
- <xs:element type="ranges" name="ranges" minOccurs="1" maxOccurs="1" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="dynamicBucket">
- <xs:complexContent>
- <xs:extension base="bucket">
- <xs:attribute type="xs:string" name="method" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="metrics">
- <xs:sequence>
- <xs:element type="metric" name="metric" maxOccurs="unbounded" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="match">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute type="xs:string" name="field" use="required" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="aggregations">
- <xs:choice maxOccurs="unbounded" minOccurs="1">
- <xs:element type="bucket" name="bucket" />
- </xs:choice>
- </xs:complexType>
- <xs:complexType name="queryReference">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute ref="clause" use="required" />
- <xs:attribute type="xs:string" name="ref" use="required" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="filterReference">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute ref="clause" use="required" />
- <xs:attribute type="xs:string" name="ref" use="required" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="metric">
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="type">
- <xs:simpleType>
- <xs:restriction base="xs:string">
- <xs:enumeration value="sum" />
- <xs:enumeration value="count" />
- <xs:enumeration value="min" />
- <xs:enumeration value="max" />
- <xs:enumeration value="avg" />
- </xs:restriction>
- </xs:simpleType>
- </xs:attribute>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <xs:complexType name="ranges">
- <xs:sequence>
- <xs:element type="range" name="range" maxOccurs="unbounded" minOccurs="0" />
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="range">
- <xs:attribute type="xs:string" name="to" use="required" />
- <xs:attribute type="xs:string" name="from" use="required" />
- </xs:complexType>
- </xs:schema>
|