通过整数字段在Elasticsearch_dsl中进行范围查询

tar*_*inf 4 django elasticsearch elasticsearch-dsl-py

我用过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
        )
Run Code Online (Sandbox Code Playgroud)

DocType类

class DocItem(DocType):
    price = Integer()
Run Code Online (Sandbox Code Playgroud)

FacetedSearch类

class ItemSearch(FacetedSearch):
    index = 'item'
    doc_types = [DocItem, ]
    fields = ['price']
Run Code Online (Sandbox Code Playgroud)

当我需要使用搜索所有项目时price == 5.0,执行下一个操作:

search = ItemSearch().search()
result = search.filter('match', price=5.0).execute()
Run Code Online (Sandbox Code Playgroud)

问题

如何搜索价格范围为1.0 <价格<= 5.0的所有项目?

Val*_*Val 6

您可以这样做:

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

  • 我认为这应该是一个不同的问题 (2认同)