2016-06-09 9 views
0

Ich verwende ES 1.4.Elasticsearch Facettengröße

Ich frage meinen Index mit Paginierung ab (mit from und Größe in der Suchanfrage, um 20 Ergebnisse pro Seite zu haben), und ich habe ein Limit von Suchtreffern auf 100 gesetzt (also kann ich nicht mehr als 5 Seiten haben)

)

ich versuche Begriff Facetten zu verwenden, ist jedoch das Zählfeld global, es ist über die alle Suchtreffer, die hier mehr als 100

sein kann, ist ein einfaches Beispiel:

{ 
    "from": 0, 
    "size": 20, 
    "query": { 
     "match_all": {} 
    } , "facets" : { 
    "tags" : { 
     "terms" : { 
      "field" : "tag" 
     } 
    } 
    } 
} 

Gibt es eine Möglichkeit, ein Limit in ES Facetten zu setzen, um nur auf f zu schauen erste 100 Treffer?

Danke!

Antwort

0

Es gibt eine Option, die von ElasticSeach bereitgestellt wird, um die Facetten auf Ergebnisse zu beschränken, die von den Abfragen & zurückgegeben werden. Sie können den global Parameter für jede Facette auf true oder false setzen. Wenn kein Wert angegeben ist, wird global auf true gesetzt. Da Sie nur schauen, um die Top-100-Ergebnisse zurückkehrt, sollten Sie vielleicht einen limit Filter auf Ihre Anfrage gelten (limit filter documentation)

Versuchen Sie, Ihre Abfrage wie folgt ändern:

{ 
    "from": 0, 
    "size": 20, 
    "query": { 
     "filtered" : { 
      "filter" : { 
       "limit" : {"value" : 100} 
      } 
     } 
    }, 
    "facets" : { 
     "tags" : { 
      "terms" : { 
       "field" : "tag" 
      } 
      "global": false 
     } 
    } 
} 

Wenn Sie nicht wollen, alle Filter auf Ihre Daten anwenden, könnten Sie versuchen, die limit Filter innerhalb des aggs (limit filter documentation) mit:

{ 
    "aggs": { 
    "limit_results": { 
     "filter": { 
     "limit": { 
      "value": 100 
     } 
     }, 
     "aggs": { 
     "tags": { 
      "terms": { 
      "field": "tag", 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

die size param innerhalb der zweiten ist die Anzahl der zurückgegebenen Tag-Gruppen. Der Standardwert ist 10 (documentation).

Lassen Sie mich wissen, wenn dies hilft :)

+0

Vielen Dank für Ihre Antwort. Ich habe den Limit-Filter ausprobiert, allerdings begrenzt dies die Anzahl der Dokumente pro Shard. Wenn ich also mehr als 1 Shard habe, könnte die gleiche Suchanfrage andere Ergebnisse liefern –

Verwandte Themen