pycarol.filter

class pycarol.filter.AGG(value)[source]

An enumeration.

class pycarol.filter.FT(value)[source]

An enumeration.

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
}