Как мне объединить свои запросы, чтобы сэкономить поездки в Elasticsearch?

У меня есть 2 запроса, которые я пытаюсь выполнить:

1) Я хочу получить день рождения Фрэнка. (Имя человека является идентификатором документа).

2) Босс Фрэнка — Боб. Мне нужно получить количество людей (включая Фрэнка), начальником которых является Боб.

Для № 1 я делаю:

GET /myindex/_search
{
  "_source": [
    "birthday"
  ],
  "query": {
    "term": {"_id" : "Frank"}
  }
}

Для № 2 я делаю:

GET /myindex/_count
{
 "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "boss": "Bob"
          }
        }
      ]
    }
  }
}

Кажется пустой тратой времени получить №1, а затем сразу же получить №2. Есть ли способ объединить запрос в 1 запрос?

Моя попытка:

GET /myindex/_search
    {
      "_source": [
        "birthday"
      ],
      "query": {
        "term": {"_id" : "Frank"},
        "bool": {
          "filter": [
            {
              "term": {
                "boss": "Bob"
              }
            }
          ]
        }
      }
    }

Это явно неправильно и возвращает ошибку: [term] некорректный запрос, ожидался [END_OBJECT], но найдено [FIELD_NAME].


person Community    schedule 07.09.2017    source источник


Ответы (1)


Пока вам НЕ нужен результат первого запроса внутри других ваших запросов, вы можете использовать API множественного поиска

person Vova Bilyachat    schedule 07.09.2017
comment
Согласовано! Эти два запроса полностью независимы, поэтому множественный поиск идеально подходит для этого случая. - person Val; 07.09.2017
comment
@Вал, да хозяин! :) - person Vova Bilyachat; 07.09.2017