I have the documents as parent-child relationship:
https://gist.github.com/shadow-fox/fb525a7efe66622230e61d6253b6cfa9
How to sort the parent (type_s:product)s based on the grandchildren
(type_s:vendor) field value ?
|parent = type_s: product children = type_s: sku grandchildren =
type_s:storage type_s:vendor example parent document with all the children. |
|<doc> <field name="id">10</field> <field name="type_s">product</field>
<field name="BRAND_s">Nike</field> <!-- nesting skus in product -->
<doc> <field name="id">11</field> <field name="type_s">sku</field>
<field name="COLOR_s">Red</field> <field name="SIZE_s">XL</field> <!--
nesting locations into sku --> <doc> <field name="id">13</field> <field
name="type_s">storage</field> <field name="STATE_s">CA</field> <field
name="QTY_i">10</field> </doc> <doc> <field name="id">14</field> <field
name="type_s">storage</field> <field name="STATE_s">NY</field> <field
name="QTY_i">0</field> </doc> <doc> <field name="id">15</field> <field
name="type_s">vendor</field> <field name="NAME_s">Bob</field> <field
name="PRICE_i">20</field> </doc> <doc> <field name="id">16</field>
<field name="type_s">vendor</field> <field name="NAME_s">Alice</field>
<field name="PRICE_i">22</field> </doc> </doc> <doc> <field
name="id">12</field> <field name="type_s">sku</field> <field
name="COLOR_s">Blue</field> <field name="SIZE_s">XL</field> <!-- nesting
locations into sku --> <doc> <field name="id">17</field> <field
name="type_s">storage</field> <field name="STATE_s">CA</field> <field
name="QTY_i">0</field> </doc> <doc> <field name="id">18</field> <field
name="type_s">storage</field> <field name="STATE_s">NY</field> <field
name="QTY_i">100</field> </doc> <doc> <field name="id">19</field> <field
name="type_s">vendor</field> <field name="NAME_s">Bob</field> <field
name="PRICE_i">25</field> </doc> <doc> <field name="id">20</field>
<field name="type_s">vendor</field> <field name="NAME_s">Alice</field>
<field name="PRICE_i">28</field> </doc> </doc> <!-- nesting vendors into
product --> </doc> |
The query:
|{!parent which=type_s:product} +COLOR_s:Blue +{!parent which=type_s:sku
v='+QTY_i:[10 TO *] +STATE_s:CA'} |
The result:
|[ { "id": "21", "type_s": "product", "BRAND_s": "Nike", "_version_":
1726713699507372000 }, { "id": "32", "type_s": "product", "BRAND_s":
"Puma", "_version_": 1726713699562946600 } ] |
I want the results to be sorted by the matched |type_s:sku document|'s
|children document type_s:vendor AND NAME_s:Alice| docs |PRICE_i| field
in descending.
I have tried:
|{!parent which=type_s:product score=max v=ā+type_s:sku
+{!func}PRICE_iā} desc |
|{!parent which=type_s:product score=max v='{!parent which=type_s:sku
v='type_s:vendor AND NAME_s:Alice'}+{!func}PRICE_i' asc |
However it gives "error in sort".