соответствует ближайшему числовому значению elasticsearchDSL (php)

У меня возникли проблемы с поиском ответа в SO, эластичных поисковых документах или Google, чтобы найти этот ответ для моего варианта использования: найти ближайшее число к вводу X, которое все еще меньше, чем X.

У меня есть отображение, которое выглядит так:

{
    "rule": {
        "properties": {
        "price": { "type": "long" }, 
        "from": { "type": "long" }
        }
    }
}

Мне нужно ближайшее соответствие from, то есть меньше входного значения. Так, например, у меня есть эти правила:

{
    { "rule": {"from": 1, "price": 5} },
    { "rule": {"from": 50, "price": 4} },
    { "rule": {"from": 100, "price": 3} },
    { "rule": {"from": 150, "price": 2} }
}

Если я ищу from со значением от 75, мне нужно правило для "from": 50.

Большинство ответов, которые я нашел, касались гео / IP или текста, я не смог найти пример, который заставил бы меня щелкнуть.


person rootshelled    schedule 09.03.2020    source источник


Ответы (1)


Запрос диапазона можно использовать для получения всех правил, которые меньше входного значения. Верхний 1 отсортированный документ (по из ) может быть возвращен

Запрос:

{
  "query": {
    "range": {
      "rule.from": {
        "lte": 75
      }
    }
  },
  "size": 1,
  "sort": [
    {
      "rule.from": {
        "order": "desc"
      }
    }
  ]
}
person jaspreet chahal    schedule 09.03.2020
comment
Отлично, именно то, что мне было нужно, я чувствую себя почти тупым, потому что это то же самое, что вы могли бы сделать и с SQL. - person rootshelled; 12.03.2020