Elasticsearch_dsl 中整数字段的范围查询

Range query in Elasticsearch_dsl by integer field

我使用了 elasticsearch-dsl==5.2.0elasticsearch==5.3.0Django==1.8.15

Django 模型:

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

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

文档类型class:

class DocItem(DocType):
    price = Integer()

FacetedSearch class:

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 < price <= 5.0 范围内的所有商品?

你可以这样做:

search = ItemSearch().search()
result = search.filter('range', price={'gt': 1, 'lte': 5.0}).execute()