соответствует значению ближайшего номера эластичный поискDSL (php) - PullRequest
0 голосов
/ 09 марта 2020

У меня проблемы с поиском ответа по SO, elasti c search docs или 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 или текстом, я не смог найти пример, который заставил его щелкнуть меня.

1 Ответ

0 голосов
/ 09 марта 2020

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

Запрос:

{
  "query": {
    "range": {
      "rule.from": {
        "lte": 75
      }
    }
  },
  "size": 1,
  "sort": [
    {
      "rule.from": {
        "order": "desc"
      }
    }
  ]
}
...