Запрос диапазона в Elasticsearch_dsl по целочисленному полю

Я использовал elasticsearch-dsl==5.2.0, elasticsearch==5.3.0 а также Django==1.8.15,

Модель Джанго:

class Item(models.Model):
    price = models.DecimalField(default=0)

    def to_search(self):
        return DocItem(
            meta={'id': self.id},
            price=self.price
        )

Класс DocType:

class DocItem(DocType):
    price = Integer()

Класс FacetedSearch:

class ItemSearch(FacetedSearch):
    index = 'item'
    doc_types = [DocItem, ]
    fields = ['price']

Когда мне нужно искать все элементы с price == 5.0Делаю следующее:

search = ItemSearch().search()
result = search.filter('match', price=5.0).execute()

Вопрос:

Как я могу найти все товары с ценой в диапазоне: 1,0 <цена <= 5,0?

1 ответ

Решение

Вы можете сделать это так:

search = ItemSearch().search()
result = search.filter('range', price={'gt': 1, 'lte': 5.0}).execute()
Другие вопросы по тегам