Есть ли краткая форма для запроса диапазона нескольких полей - PullRequest
0 голосов
/ 24 июня 2019

Мне нужно написать диапазон запросов по многопольным данным. Однако каждое поле не должно обрабатываться независимо. Например, у меня есть следующий порядок:

(20, 20) > (10, 1) > (9, 9) > (9, 5) > (7, 10) > (5, 20)

Вопросы Запрос вasticsearch с несколькими диапазонами на несколько дат и Запрос диапазона дат Elasticsearch с использованием двух полей не связан , потому что в ситуации, когда я хочу найти все документы gt (7, 10) Я получу только (20, 20) и потеряю все остальные документы.

Для случая с двумя полями я могу написать следующий запрос:

# target query
GET /test/_search?pretty
{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "field1": {
              "gt": 7
            }
          }
        },
        {
          "bool": {
            "must": [
              {
                "term": {
                  "field1": 7
                }
              },
              {
                "range": {
                  "run": {
                    "field2": 10
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}

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

Сортировка В запросе есть форма для сортировки таких данных, как я хочу:

GET /test/_search?pretty
{
    "sort": [
        { "field1": { "order": "desc" }},
        { "field2": { "order": "desc" }}
    ]
}

Итак, вопросы:

  • Существует ли краткая форма целевого запроса , которая напоминает запрос sort ?
  • Если нет, возможно, есть лучший способ реализовать его для большего числа полей в документе?

Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...