pycarol.filter
- class pycarol.filter.Filter(builder)[source]
Class responsible for creating the json queries to be used in pycarol.Query
Usage:
from pycarol.filter import TYPE_FILTER, Filter, TERM_FILTER json_query = Filter.Builder()\ .must(TYPE_FILTER(value='medicalform' + "Golden"))\ .must(TERM_FILTER(key='mdmGoldenFieldAndValues.status.raw',value='pending'))\ .must_not(TERM_FILTER(key='mdmGoldenFieldAndValues.auditedbycarol',value=True))\ .build().to_json()
This will create the following json query.
{ 'mustList': [ { 'mdmFilterType': 'TYPE_FILTER', 'mdmValue': 'medicalformGolden' }, { 'mdmFilterType': 'TERM_FILTER', 'mdmKey': 'mdmGoldenFieldAndValues.status.raw', 'mdmValue': 'pending' } ], 'mustNotList': [ { 'mdmFilterType': 'TERM_FILTER', 'mdmKey': 'mdmGoldenFieldAndValues.auditedbycarol', 'mdmValue': True } ], 'shouldList': [ ], 'aggregationList': [ ], 'minimumShouldMatch': 1 }Using with Aggregations:
from pycarol.filter import MINIMUM, MAXIMUM, TYPE_FILTER, Filter, TERM_FILTER json_query = Filter.Builder() \ .type('datamodel') \ .aggregation_list([MINIMUM(name='MINIMUM', params='mdm_key'), MAXIMUM(name='MAXIMUM', params='mdm_key')]) \ .build().to_json()
{ 'mustList': [ { 'mdmFilterType': 'TYPE_FILTER', 'mdmValue': 'datamodel' } ], 'mustNotList': [ ], 'shouldList': [ ], 'aggregationList': [ { 'type': 'MINIMUM', 'name': 'MINIMUM', 'params': 'mdm_key', 'size': 10, 'shardSize': 10, 'minDocCount': 0 }, { 'type': 'MAXIMUM', 'name': 'MAXIMUM', 'params': 'mdm_key', 'size': 10, 'shardSize': 10, 'minDocCount': 0 } ], 'minimumShouldMatch': 1 }