Запрос диапазона в Elasticsearch_dsl по целочисленному полю
Я использовал elasticsearch-dsl==5.2.0
, elasticsearch==5.3.0
а также Django==1.8.15
,
Модель Джанго:
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?
1 ответ
Решение
Вы можете сделать это так:
search = ItemSearch().search()
result = search.filter('range', price={'gt': 1, 'lte': 5.0}).execute()