Example #1
0
    def test_search_to_dict(self):
        s = Search()
        assert {} == s.to_dict()

        s = s.query("match", f=42)
        assert {"query": {"match": {"f": {"query": 42}}}} == s.to_dict()

        assert {
            "query": {
                "match": {
                    "f": {
                        "query": 42
                    }
                }
            },
            "size": 10
        } == s.to_dict(size=10)

        s = s.aggs("per_tag", "terms", field="f").aggs("max_score",
                                                       "max",
                                                       field="score")
        d = {
            "aggs": {
                "per_tag": {
                    "terms": {
                        "field": "f"
                    },
                    "aggs": {
                        "max_score": {
                            "max": {
                                "field": "score"
                            }
                        }
                    },
                }
            },
            "query": {
                "match": {
                    "f": {
                        "query": 42
                    }
                }
            },
        }
        self.assertEqual(d, s.to_dict())

        s = Search().params(size=5)
        assert {"size": 5} == s.to_dict()
        s = s.params(from_=42)
        assert {"size": 5, "from": 42} == s.to_dict()
Example #2
0
def test_aggs_allow_two_metric():
    s = Search()

    s = s.aggs({"a": Max(field="a"), "b": Max(field="b")})

    assert s.to_dict() == {
        "aggs": {
            "a": {
                "max": {
                    "field": "a"
                }
            },
            "b": {
                "max": {
                    "field": "b"
                }
            }
        }
    }
Example #3
0
    def test_aggs_allow_two_metric(self):
        s = Search()

        s = s.aggs([Aggs("a", "max", field="a"), Aggs("b", "max", field="b")])

        self.assertEqual(
            s.to_dict(),
            {
                "aggs": {
                    "a": {
                        "max": {
                            "field": "a"
                        }
                    },
                    "b": {
                        "max": {
                            "field": "b"
                        }
                    }
                }
            },
        )