in esrally/metrics.py [0:0]
def list(self):
track = self._track()
name = self._benchmark_name()
from_date = self._from_date()
to_date = self._to_date()
challenge = self._challenge()
filters = [
{
"term": {
"environment": self.environment_name,
},
},
{"range": {"race-timestamp": {"gte": from_date, "lte": to_date, "format": "basic_date"}}},
]
query = {
"query": {
"bool": {
"filter": filters,
},
},
"size": self._max_results(),
"sort": [
{
"race-timestamp": {
"order": "desc",
},
},
],
}
if track:
query["query"]["bool"]["filter"].append({"term": {"track": track}})
if name:
query["query"]["bool"]["filter"].append(
{"bool": {"should": [{"term": {"user-tags.benchmark-name": name}}, {"term": {"user-tags.name": name}}]}}
)
if challenge:
query["query"]["bool"]["filter"].append({"bool": {"should": [{"term": {"challenge": challenge}}]}})
result = self.client.search(index="%s*" % EsRaceStore.INDEX_PREFIX, body=query)
hits = result["hits"]["total"]
# Elasticsearch 7.0+
if isinstance(hits, dict):
hits = hits["value"]
if hits > 0:
return [Race.from_dict(v["_source"]) for v in result["hits"]["hits"]]
else:
return []