2017-04-12 4 views
4

elasticsearch-dsl==5.2.0,elasticsearch==5.3.0およびDjango==1.8.15を使用しました。整数フィールドによるElasticsearch_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

あなたはこのようにそれを行うことができます。私は ` 'range'`と`のような他のparams' gt'`、 ` 'lte'`のように、既存のフィルタの種類について読むことができます

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

?構文は何ですか? – tarasinf

+0

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

+0

また、完全なクエリDSLは、公式ドキュメントのhttps://www.elastic.co/guide/en/elasticsearch/で確認できます。 reference/current/query-dsl.html – Val

関連する問題