class Test_SearchBodyBuild(unittest.TestCase): def setUp(self): self.esbody = SearchBodyBuild() self.testquery = { 'query': { 'bool': { 'must': [ { 'bool': { 'should': [] } }, ] } } } self.testaggs = {} def test_select_must(self): self.esbody.must('time1', 'today') self.testquery['query']['bool']['must'].append( {'term': { 'time1': 'today' }}) self.assertEqual(self.esbody.query_build.get_body(), self.testquery) self.esbody.must('time2', 'today') self.testquery['query']['bool']['must'].append( {'term': { 'time2': 'today' }}) self.assertEqual(self.esbody.query_build.get_body(), self.testquery) def test_select_should(self): self.esbody.should('time1', 'today')\ .should('time2', 'today') self.testquery['query']['bool']['must'][0]['bool']['should'].append( {'term': { 'time1': 'today' }}) self.testquery['query']['bool']['must'][0]['bool']['should'].append( {'term': { 'time2': 'today' }}) self.assertEqual(self.esbody.query_build.get_body(), self.testquery) def test_select_range(self): self.esbody.range('time', 'yesterday', 'today') self.testquery['query']['bool']['must'].append( {'range': { 'time': { 'gte': 'yesterday', 'lte': 'today' } }}) self.assertEqual(self.esbody.query_build.get_body(), self.testquery) def test_select_range_should(self): self.esbody.range('time', 'yesterday', 'today')\ .should('time1', 'today')\ .should('time2', 'today') self.testquery['query']['bool']['must'].append( {'range': { 'time': { 'gte': 'yesterday', 'lte': 'today' } }}) self.testquery['query']['bool']['must'][0]['bool']['should'].append( {'term': { 'time1': 'today' }}) self.testquery['query']['bool']['must'][0]['bool']['should'].append( {'term': { 'time2': 'today' }}) self.assertEqual(self.esbody.query_build.get_body(), self.testquery) def test_update_aggs(self): self.assertEqual(self.esbody.aggs_build.get_body(), self.testaggs) self.esbody.groupby('ip') self.testaggs['aggs'] = { 'ip-terms': { 'terms': { 'field': 'ip', 'size': 0 } } } self.assertEqual(self.esbody.aggs_build.get_body(), self.testaggs) self.esbody.groupby_date('date', '1h')\ .avg('count') self.testaggs['aggs']['ip-terms']['aggs'] = { 'date-date_histogram': { 'date_histogram': { 'field': 'date', 'interval': '1h' } }, 'count-avg': { 'avg': { 'field': 'count' } } } self.assertEqual(self.esbody.aggs_build.get_body(), self.testaggs) def test_bodybuild(self): body = {} body.update(self.testquery) body.update(self.testaggs) self.assertEqual(self.esbody.get_body(), body) self.esbody.range('time', 'yesterday', 'today')\ .should('time1', 'today') self.testquery['query']['bool']['must'].append( {'range': { 'time': { 'gte': 'yesterday', 'lte': 'today' } }}) self.testquery['query']['bool']['must'][0]['bool']['should'].append( {'term': { 'time1': 'today' }}) self.esbody.groupby_date('date', '1h')\ .avg('count') self.testaggs['aggs'] = { 'date-date_histogram': { 'date_histogram': { 'field': 'date', 'interval': '1h' } }, 'count-avg': { 'avg': { 'field': 'count' } } } body = {} body.update(self.testquery) body.update(self.testaggs) self.assertEqual(self.esbody.get_body(), body)
class Test_SearchBodyBuild(unittest.TestCase): def setUp(self): self.esbody = SearchBodyBuild() self.testquery = { 'query': { 'bool': { 'must': [ { 'bool': { 'should': [] } }, ] } } } self.testaggs = {} def test_select_must(self): self.esbody.must('time1', 'today') self.testquery['query']['bool']['must'].append({'term': {'time1': 'today'}}) self.assertEqual( self.esbody.query_build.get_body(), self.testquery ) self.esbody.must('time2', 'today') self.testquery['query']['bool']['must'].append({'term': {'time2': 'today'}}) self.assertEqual( self.esbody.query_build.get_body(), self.testquery ) def test_select_should(self): self.esbody.should('time1', 'today')\ .should('time2', 'today') self.testquery['query']['bool']['must'][0]['bool']['should'].append({'term': {'time1': 'today'}}) self.testquery['query']['bool']['must'][0]['bool']['should'].append({'term': {'time2': 'today'}}) self.assertEqual( self.esbody.query_build.get_body(), self.testquery ) def test_select_range(self): self.esbody.range('time', 'yesterday', 'today') self.testquery['query']['bool']['must'].append({'range': {'time': {'gte': 'yesterday', 'lte': 'today'}}}) self.assertEqual( self.esbody.query_build.get_body(), self.testquery ) def test_select_range_should(self): self.esbody.range('time', 'yesterday', 'today')\ .should('time1', 'today')\ .should('time2', 'today') self.testquery['query']['bool']['must'].append({'range': {'time': {'gte': 'yesterday', 'lte': 'today'}}}) self.testquery['query']['bool']['must'][0]['bool']['should'].append({'term': {'time1': 'today'}}) self.testquery['query']['bool']['must'][0]['bool']['should'].append({'term': {'time2': 'today'}}) self.assertEqual( self.esbody.query_build.get_body(), self.testquery ) def test_update_aggs(self): self.assertEqual(self.esbody.aggs_build.get_body(), self.testaggs) self.esbody.groupby('ip') self.testaggs['aggs'] = {'ip-terms': {'terms': {'field': 'ip', 'size': 0}}} self.assertEqual(self.esbody.aggs_build.get_body(), self.testaggs) self.esbody.groupby_date('date', '1h')\ .avg('count') self.testaggs['aggs']['ip-terms']['aggs'] = { 'date-date_histogram': {'date_histogram': {'field': 'date', 'interval': '1h'}}, 'count-avg': {'avg': {'field': 'count'}} } self.assertEqual(self.esbody.aggs_build.get_body(), self.testaggs) def test_bodybuild(self): body = {} body.update(self.testquery) body.update(self.testaggs) self.assertEqual(self.esbody.get_body(), body) self.esbody.range('time', 'yesterday', 'today')\ .should('time1', 'today') self.testquery['query']['bool']['must'].append({'range': {'time': {'gte': 'yesterday', 'lte': 'today'}}}) self.testquery['query']['bool']['must'][0]['bool']['should'].append({'term': {'time1': 'today'}}) self.esbody.groupby_date('date', '1h')\ .avg('count') self.testaggs['aggs'] = { 'date-date_histogram': {'date_histogram': {'field': 'date', 'interval': '1h'}}, 'count-avg': {'avg': {'field': 'count'}} } body = {} body.update(self.testquery) body.update(self.testaggs) self.assertEqual(self.esbody.get_body(), body)