File size: 670 Bytes
146bbac
d456722
 
 
 
146bbac
d456722
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12

from __future__ import annotations
def build_search_response(raw,took_ms,page,size,config):
    h=raw["hits"]; total=h["total"]["value"]; aggs=raw.get("aggregations",{})
    res=[]
    for hit in h["hits"]:
        s=dict(hit["_source"])
        for k,frags in hit.get("highlight",{}).items(): s[k]=" … ".join(frags)
        s["_id"]=hit["_id"]; s["_score"]=round(hit.get("_score") or 0,4); res.append(s)
    facets={k:[{"valor":str(b.get("key",b.get("key_as_string",""))),"total":b["doc_count"]} for b in v.get("buckets",[])] for k,v in aggs.items()}
    return {"total":total,"pagina":page,"tamanho":size,"took_ms":took_ms,"resultados":res,"facets":facets or None}