Как создать динамический фильтр ценового диапазона с помощью elasticsearch

объединение ценовых диапазонов

{
  "aggs": {
    "price_ranges": {
      "range": {
        "field": "price",
        "ranges": [
          {
            "to": 50
          },
          {
            "from": 50,
            "to": 100
          },
          {
            "from": 100
          }
        ]
      }
    },
    "price_stats": {
      "extended_stats": {
        "field": "price"
      }
    }
  }
}

Есть ли способ сделать диапазоны динамическими. например, min_price вместо 50 и max_price вместо 100. Или использовать что-то вроде «price_stats.max» для max_price?


person grace owens    schedule 09.04.2016    source источник
comment
Что значит динамический? Вы хотите иметь возможность передавать что-то вроде переменной или min_price должно быть минимальным значением из поля price?   -  person Andrei Stefan    schedule 09.04.2016
comment
Да вроде переменные. Примером приложения может быть магазин, в котором продаются обручальные кольца по цене от 500 до 4000 долларов, а также флеш-диск по цене от 5 до 10 долларов. Статическое значение раны неактуальные агги. Если это может быть достигнуто с помощью скрипта, пример будет оценен по достоинству.   -  person grace owens    schedule 09.04.2016
comment
Полезная информация. Спасибо Андрей.   -  person grace owens    schedule 12.04.2016


Ответы (1)


Вы можете получить что-то вроде этого

"max_price" : { "max" : { "field" : "discountprice" } },
"min_price" : { "min" : { "field" : "discountprice" } } 

затем создайте диапазон на прикладном уровне

person Dev Paul    schedule 08.07.2019