Ich versuche, ein Facettensystem mit Elasticsearch zu erstellen, um die Anzahl der Dokumente anzuzeigen, die einer Abfrage entsprechen.Elasticsearch Anwenden von Filtern auf Aggregation
ich zur Zeit mache diese Abfrage auf /_search?search_type=count
:
{
"query": {
"query_string": {
"query": "status:(1|2) AND categories:A"
}
},
"aggs": {
"all_products": {
"global": {},
"aggs": {
"countries": {
"aggs": {
"counter": {
"terms": ["min_doc_count": 0, "field": "country"],
"aggs": ["unique": ["cardinality": ["field": "id"]]]
}
}
},
"categories": {
"aggs": {
"counter": {
"terms": ["min_doc_count": 0, "field": "category"],
"aggs": ["unique": ["cardinality": ["field": "id"]]]
}
}
},
"statuses": {
"aggs": {
"counter": {
"terms": ["min_doc_count": 0, "field": "status"],
"aggs": ["unique": ["cardinality": ["field": "id"]]]
}
}
}
}
}
}
}
die Dokumente haben die folgende Struktur:
{
"id": 123,
"name": "Title",
"categories": ["A", "B", "C"],
"country": "United Kingdom",
"status": 1
}
so die Ausgabe, die ich suche sollte sein:
Land
- UK: 123
- USA: 1000
Kategorie
- Motors: 23
- Fashion: 1100
Der Status
- aktiv: 1120
- Nicht aktiv: 3
Ich weiß nicht, wie man richtig die Aggregationen filtern, weil gerade sie in dem angegebenen Feld alle das Dokument zählen, ohne die Berücksichtigung Abfrage status:(1|2) AND categories:A
.
Die elastische Version ist 1.7.2.
etwas Glück dabei? – Val