2017-04-12 114 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