2017-04-12 115 views
4

我使用了elasticsearch-dsl==5.2.0elasticsearch==5.3.0Django==1.8.15Elasticsearch_dsl中的整数字段范围查询

的Django模型

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?

回答

3

你可以这样说:

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

我在哪里可以了解现有的过滤器类型,如' 'range''等PARAMS像'' gt'',''lte''?这是什么语法? – tarasinf

+0

https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html – Val

+0

您也可以在https://www.elastic.co/guide/en/elasticsearch/上的官方文档中看到完整查询DSL。 reference/current/query-dsl.html – Val