2012-09-05 12 views
5

Ich habe facettierte Abfragen, die mit elasticsearch arbeiten 0.19.9. Allerdings würde Ich mag alle Facetten zurückzukehren, die eine Anzahl> 0elasticsearch Anzahl zurückgegebener Facetten

Gemäß der Dokumentation sollte ich in der Lage sein:

{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "all_terms" : true 
      } 
     } 
    } 

}

Wie ich verstehe, sollte diese geben mir alle Facetten auch dann, wenn count 0 ist.

Allerdings gibt dies immer noch nur die Top 10 Facetten nach Anzahl zurück. Welches ist die Standardgröße? Das einzige, was die Anzahl der zurückgegebenen Facetten zu beeinflussen scheint, ist "size" : N, wobei N die Anzahl Facetten ist, die zurückgegeben werden.

Ich könnte dies auf eine wirklich hohe Zahl setzen, aber das scheint nur hack-ish.

Irgendwelche Ideen, was ich falsch machen könnte?

Antwort

4

Sie machen nichts falsch. Du hast es richtig verstanden! Es gibt eine open issue auf Github, um die Begriffe ähnlich wie die Terms Stats facet Facette facet zu machen, die Sie Größe = 0 festlegen können, um alle Begriffe zurück zu erhalten. Für jetzt müssen Sie nur einen hohen Wert verwenden, was ein bisschen schwierig ist, stimme ich zu. Auf der anderen Seite achten Sie darauf, nicht zu viele Einträge zurückzugeben!

+1

Danke für das Feedback ... Auch wenn es nicht das war was ich hören wollte. –

+0

Ich denke, die häufigste Frage ist, wie man Begriffe herausfiltert, die eine Zählung haben, die größer als 0 ist. D. H. Zählen> 0, nachdem eine Terms-Facette ausgeführt wurde. Facettenausdrücke geben Zahlen an, aber wir möchten auch die Zählungen filtern. –

3
{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "size" : 2147483647, 
       "all_terms" : false 
      } 
     } 
    } 
} 

Der einzige Weg, das „count: 0“ zu entfernen, ist „all_terms“ als falsch zu setzen, und Ihre Größe Zahl so hoch eingestellt und so unmöglich, wie Sie in Ihrer Elasticsearch Instanz (das obigen Beispiel das ist größten signierten Wert, den eine Ganzzahl in PHP haben kann).

Es mag nicht der beste Weg sein, aber das ist der einzige bekannte Ansatz bisher. Der Facettenfilter funktioniert derzeit nicht (es sei denn, Elasticsearch wurde aktualisiert und verbessert).

+1

Ich habe nicht zu viele Begriffe. Dieser Ansatz funktionierte perfekt für mich. Die Suchergebnisse waren schnell genug. Vielen Dank! – anbiniyar

Verwandte Themen