POST /_search { "query" : { "term" : { "product" : "chocolate" } }, "sort" : [ { "offer.price" : { "mode" : "avg", "order" : "asc", "nested": { "path": "offer", "filter": { "term" : { "offer.color" : "blue" } } } } } ] }
es 在进行嵌套排序时 必须在sort里加"nested": 这个参数配置。因为是嵌套吗,所以一条数据可能会有多个符合条件的嵌套,
所以 filter 就是再次对数据进行过滤,仅对过滤后的数据进行排序。这个根据实际情况来确定。上面的查询语句是 先查询商品是chocolate的,然后可能chocolate 有多个颜色,这里仅按照所有蓝色的chocolate 的 平均 价格进行 排序了。
innert_hits里面的sort 是指对当前数据的排序,比如一个chocolate 有很多个颜色,然后根据颜色排序,就会只对当前的chocolate 进行排序。