Mit Elasticsearch 2, ist es möglich, eine Aggregation zurückgeben, wo eine Dokumentkategorie einen bestimmten Feldwert entspricht? Zum Beispiel möchte ich alle Kategorien bekommen, in denen categories.type = "application".Elasticsearch - Aggregation zurückgeben, um einem bestimmten Wert zu entsprechen?
Meine Abbildung sieht wie folgt aus:
"mappings": {
"products": {
"_all": {
"enabled": true
},
"properties": {
"title": {
"type": "string"
},
"categories": {
"type":"nested",
"properties": {
"type": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
Meine Abfrage sieht wie folgt aus, die alle Kategorietypen gibt, aber ich will nur diejenigen, wo categories.type = „application“ filtern.
{
"query":{
"multi_match": {
"query": "Sound",
"fields": [
"title"
]
}
},
"aggs":{
"Applications": {
"nested": {
"path": "categories"
},
"aggs": {
"meta": {
"terms": {
"field": "categories.type"
},
"aggs": {
"name": {
"terms": {
"field": "categories.name"
}
}
}
}
}
}
}
}
Gibt es eine Möglichkeit, boolesche Logik der Aggregation hinzuzufügen, so etwas wie categories.type = "Anwendung "oder" Sensoren "? – Redtopia
Ja. Sie können Bool-Filter verwenden. Filterteil wie folgt ändern: "filter": {"bool": {"sollte": [{"term": {"categories.type": "application"}}, {"term": {"categories.type": "Sensor"}}]}} – alpert
Wissen Sie, wie ich einen Größenparameter für diese Aggregation angeben kann? Es ist standardmäßig 10, aber ich möchte 50 von ihnen bekommen. – Redtopia