Usé elasticsearch elasticsearch-dsl==5.2.0 , elasticsearch==5.3.0 y Django==1.8.15 .
Modelo Django :
class Item(models.Model): price = models.DecimalField(default=0) def to_search(self): return DocItem( meta={'id': self.id}, price=self.price )Clase de tipo de documento :
class DocItem(DocType): price = Integer()Clase de búsqueda facetada :
class ItemSearch(FacetedSearch): index = 'item' doc_types = [DocItem, ] fields = ['price'] Cuando necesito buscar todos los artículos con price == 5.0 , hago lo siguiente:
search = ItemSearch().search() result = search.filter('match', price=5.0).execute()Pregunta :
¿Cómo puedo buscar todos los artículos con precio en el rango: 1.0 <precio <= 5.0?
Puedes hacerlo así:
search = ItemSearch().search() result = search.filter('range', price={'gt': 1, 'lte': 5.0}).execute()