docs: def range(self, facet_name, field, ranges=[]):
          '''
          Range facet allow to specify a set of ranges and get both the number of docs (count) that fall within each range, and aggregated data either based on the field, or using another field.
          http://www.elasticsearch.org/guide/reference/api/search/facets/range-facet.html
  
          > ElasticFacet().range('range1', 'field_name', [ slice(50), slice(20,70), slice(50,-1) ])
          {
            "range1" : {
              "range" : {
                  "field" : "field_name",
                  "ranges" : [
                      { "to" : 50 },
                      { "from" : 20, "to" : 70 },
                      { "from" : 70, "to" : 120 },
                      { "from" : 150 }
                  ]
              }
             }
          }
          '''
  
          self[facet_name] = {'range': {'field': field, 'ranges': []}}
          for s in ranges:
              if not isinstance(s, slice):
                  continue
              entry = dict()
              if s.start:
                  entry['from'] = s.start
              if s.stop != -1:
                  entry['to'] = s.stop
              self[facet_name]['range']['ranges'].append(entry)
  
          return self