Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›REST API ›API поиска

API подсчёта

Справочник новых API

Для получения самых свежих данных об API обратитесь к API поиска.

Получает количество совпадений для запроса поиска.

resp = client.count(
    index="my-index-000001",
    q="user:kimchy",
)
print(resp)
response = client.count(
  index: 'my-index-000001',
  q: 'user:kimchy'
)
puts response
const response = await client.count({
  index: "my-index-000001",
  q: "user:kimchy",
});
console.log(response);
GET /my-index-000001/_count?q=user:kimchy

Запрос

GET /<target>/_count

Предварительные условия

  • Если включены функции безопасности Elasticsearch, у вас должны быть read права доступа к индексу для целевого потока данных, индекса или псевдонима.

Описание

API подсчёта позволяет выполнить запрос и получить количество совпадений для этого запроса. Вы можете указать запрос, используя:

  • параметр строки запроса q
  • определение Query DSL в теле запроса

Использование обоих методов приводит к ошибке.

API подсчёта поддерживает синтаксис для нескольких целей. Вы можете выполнить один запрос подсчёта по нескольким потокам данных и индексам.

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

Параметры пути

<target>
(Необязательно, строка) Список потоков данных, индексов и псевдонимов, по которым выполняется поиск, разделённые запятыми. Поддерживаются подстановочные знаки (*). Чтобы выполнить поиск по всем потокам данных и индексам, опустите этот параметр или используйте * или _all.

Параметры запроса

allow_no_indices

(Необязательно, Булево) Если false, запрос возвращает ошибку, если какое-либо выражение с подстановкой, псевдоним индекса или _all значение указывают только на отсутствующие или закрытые индексы. Это поведение применяется даже если запрос направлен на другие открытые индексы. Например, запрос, направленный на foo*,bar*, возвращает ошибку, если индекс начинается с foo, но нет индекса, начинающегося с bar.

По умолчанию true.

analyzer

(Необязательно, строка) Анализатор, используемый для строки запроса.

Этот параметр может быть использован только при указании параметра строки запроса q.

analyze_wildcard

(Необязательно, Булево) Если true, подстановочные знаки и запросы префикса анализируются. По умолчанию false.

Этот параметр может быть использован только при указании параметра строки запроса q.

default_operator

(Необязательно, строка) Оператор по умолчанию для запроса по строке: AND или OR. По умолчанию OR.

Этот параметр может быть использован только при указании параметра строки запроса q.

df

(Необязательно, строка) Поле, используемое по умолчанию, когда в строке запроса нет префикса поля.

Этот параметр может быть использован только при указании параметра строки запроса q.

expand_wildcards

(Необязательно, строка) Тип индекса, с которым могут совпадать шаблоны подстановочных знаков. Если запрос может направляться на потоки данных, этот аргумент определяет, соответствуют ли выражения с подстановкой скрытым потокам данных. Поддерживаются значения, разделённые запятыми, такие как open,hidden. Допустимые значения:

all
Соответствие любому потоку данных или индексу, включая скрытые.
open
Соответствие открытым, нескрытым индексам. Также соответствует любому нескрытому потоку данных.
closed
Соответствие закрытым, нескрытым индексам. Также соответствует любому нескрытому потоку данных. Потоки данных не могут быть закрыты.
hidden
Соответствие скрытым потокам данных и скрытым индексам. Должен быть объединён с open, closed или обоими.
none
Шаблоны подстановочных знаков не принимаются.

По умолчанию open.

ignore_throttled

(Необязательно, Булево) Если true, конкретные, расширенные или псевдонимизированные индексы игнорируются при заморозке. По умолчанию true.

[7.16.0] Устарело в 7.16.0.

ignore_unavailable
(Необязательно, Булево) Если false, запрос возвращает ошибку, если он направлен на отсутствующий или закрытый индекс. По умолчанию false.
lenient

(Необязательно, Булево) Если true, ошибки запроса, основанные на формате (например, предоставление текста для числового поля) в строке запроса, будут проигнорированы. По умолчанию false.

Этот параметр может быть использован только при указании параметра строки запроса q.

min_score
(Необязательно, число с плавающей точкой) Устанавливает минимальное значение _score, которое должны иметь документы, чтобы быть включёнными в результат.
preference
(Необязательно, строка) Указывает узел или фрагмент, на котором должна быть выполнена операция. По умолчанию случайный.
q

(Необязательно, строка) Запрос в синтаксисе строки запроса Lucene.

Если указан параметр q, API подсчёта не принимает тело запроса.

routing
(Необязательно, строка) Пользовательское значение, используемое для маршрутизации операций на определённый фрагмент.
terminate_after

(Необязательно, целое число) Максимальное количество документов, собираемых для каждого фрагмента. Если запрос достигнет этого предела, Elasticsearch прервёт его досрочно. Elasticsearch собирает документы перед сортировкой.

Используйте с осторожностью. Elasticsearch применяет этот параметр к каждому фрагменту, обрабатывающему запрос. Если возможно, позвольте Elasticsearch выполнять прерывание запроса автоматически. Избегайте указания этого параметра для запросов, направленных на потоки данных с поддерживающими индексами в нескольких уровнях данных.

Тело запроса

query
(Необязательно, объект запроса) Определяет запрос поиска с помощью Query DSL.

Примеры

resp = client.index(
    index="my-index-000001",
    id="1",
    refresh=True,
    document={
        "user.id": "kimchy"
    },
)
print(resp)

resp1 = client.count(
    index="my-index-000001",
    q="user:kimchy",
)
print(resp1)

resp2 = client.count(
    index="my-index-000001",
    query={
        "term": {
            "user.id": "kimchy"
        }
    },
)
print(resp2)
response = client.index(
  index: 'my-index-000001',
  id: 1,
  refresh: true,
  body: {
    'user.id' => 'kimchy'
  }
)
puts response

response = client.count(
  index: 'my-index-000001',
  q: 'user:kimchy'
)
puts response

response = client.count(
  index: 'my-index-000001',
  body: {
    query: {
      term: {
        'user.id' => 'kimchy'
      }
    }
  }
)
puts response
const response = await client.index({
  index: "my-index-000001",
  id: 1,
  refresh: "true",
  document: {
    "user.id": "kimchy",
  },
});
console.log(response);

const response1 = await client.count({
  index: "my-index-000001",
  q: "user:kimchy",
});
console.log(response1);

const response2 = await client.count({
  index: "my-index-000001",
  query: {
    term: {
      "user.id": "kimchy",
    },
  },
});
console.log(response2);
PUT /my-index-000001/_doc/1?refresh
{
  "user.id": "kimchy"
}

GET /my-index-000001/_count?q=user:kimchy

GET /my-index-000001/_count
{
  "query" : {
    "term" : { "user.id" : "kimchy" }
  }
}

Оба примера делают одно и то же: подсчитывают количество документов в my-index-000001 с user.id в kimchy. API возвращает следующий ответ:

{
  "count": 1,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  }
}

Запрос необязателен. Если запрос не указан, API использует match_all для подсчёта всех документов.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/search-count.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API