def list()

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 []