Эластичный поиск, где разделение двух полей больше, чем

#elasticsearch

Вопрос:

Пытаюсь выполнить логический запрос, где «X/Y>0,60».

Не мог сделать Это без всякой логики.

Нужна помощь для создания логики.

Ответ №1:

Вы можете использовать запрос сценария в контексте фильтра. Вот пример:

 {
  "query": {
    "bool": {
      "filter": {
        "script": {
          "script": {
            "source": "doc.x.value / doc.y.value == params.foo",
            "params": {
              "foo": 0.60
            }
          }
        }
      }
    }
  }
}
 

Комментарии:

1. в качестве альтернативы, предполагая, что оба значения X и Y существуют в одном документе, используйте поле времени выполнения — elastic.co/guide/en/elasticsearch/reference/7.15/runtime.html — с похожим сценарием