I have a query that works properly sometimes. This query is simple bool query with nested composite(on terms) aggregations with hits size of zero because I only need the terms agg results so I can group the results by a certain field's value with top hits agg later. In response sometimes with the exactly same query I get the proper results, but, most of the times I have no aggregations
field in the body and instead I have a bunch oh hits (that should have been empty corresponding to the query I mentioned.) What is the problem exactly?
P.S. 1: The size of the composite agg is set to 10 (so, it is not too much.)
P.S. 2: When I get the wrong response I get a num_reduce_phases: 3
in the body.
P.S. 3: The elasticsearch version is 7.3.1 and I use latest elasticsearch js API in NodeJS.
Sample Query
{
"query": {
"function_score": {
"functions": [],
"query": {
"bool": {
"must": {
"term": {
"supported_version": true
}
},
"must_not": {
"term": {
"token": "test"
}
}
}
}
}
},
"size": 0,
"aggs": {
"attempts": {
"composite": {
"sources": [
{
"attempt_id": {
"terms": {
"field": "attempt_id.keyword"
}
}
}
],
"size": 10,
"after": {
"attempt_id": "00000608-684a-44ef-a6d2-69ccb7569ea8"
}
},
"aggs": {
"log": {
"filter": {
"term": {
"endpoint": "log"
}
},
"aggs": {
"last_log": {
"top_hits": {
"sort": [
{
"datetime": "desc"
}
],
"size": 1,
"_source": {
"includes": [
"attempt_id",
"input",
"location"
]
}
}
}
}
},
"fix": {
"filter": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"term": {
"action_code": 1
}
},
{
"term": {
"action_code": 2
}
}
]
}
},
"aggs": {
"last_fix": {
"top_hits": {
"sort": [
{
"datetime": "desc"
}
],
"size": 1,
"_source": {
"includes": [
"attempt_id",
"start",
"end"
]
}
}
}
}
}
}
}
}
}