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".

Reply via email to