API компактного и выровненного текста (CAT)
Введение
JSON отлично подходит… для компьютеров. Даже при красивом форматировании поиск взаимосвязей в данных может быть утомительным. Глазам человека, особенно при просмотре терминала, необходим компактный и выровненный текст. API компактного и выровненного текста (CAT) предназначены для удовлетворения этой потребности.
API cat предназначены только для использования человеком с помощью консоли Kibana или командной строки. Они не предназначены для использования приложениями. Для использования приложениями рекомендуется использовать соответствующий API JSON.
Все команды cat принимают параметр запроса help для просмотра всех заголовков и информации, которые они предоставляют, и команда /_cat в одиночку перечисляет все доступные команды.
Общие параметры
Подробно
Каждая из команд принимает параметр запроса v для включения подробного вывода. Например:
resp = client.cat.master(
v=True,
)
print(resp) response = client.cat.master( v: true ) puts response
const response = await client.cat.master({
v: "true",
});
console.log(response); GET _cat/master?v=true
Возможный ответ:
id host ip node u_n93zwxThWHi1PDBJAGAg 127.0.0.1 127.0.0.1 u_n93zw
Справка
Каждая из команд принимает параметр запроса help, который выведет доступные столбцы. Например:
resp = client.cat.master(
help=True,
)
print(resp) response = client.cat.master( help: true ) puts response
const response = await client.cat.master({
help: "true",
});
console.log(response); GET _cat/master?help
Возможный ответ:
id | | node id host | h | host name ip | | ip address node | n | node name
help не поддерживается, если используется какой-либо необязательный параметр URL. Например, GET _cat/shards/my-index-000001?help или GET _cat/indices/my-index-*?help приводит к ошибке. Используйте GET _cat/shards?help или GET _cat/indices?help вместо этого.
Заголовки
Каждая из команд принимает параметр запроса h, который заставляет отображаться только указанные столбцы. Например:
resp = client.cat.nodes(
h="ip,port,heapPercent,name",
)
print(resp) response = client.cat.nodes( h: 'ip,port,heapPercent,name' ) puts response
const response = await client.cat.nodes({
h: "ip,port,heapPercent,name",
});
console.log(response); GET _cat/nodes?h=ip,port,heapPercent,name
Ответ:
127.0.0.1 9300 27 sLBaIGK
Вы также можете запросить несколько столбцов, используя простые подстановочные знаки, такие как /_cat/thread_pool?h=ip,queue*, чтобы получить все заголовки (или псевдонимы), начинающиеся с queue.
Числовые форматы
Многие команды предоставляют несколько типов числового вывода, таких как байты, размер или значение времени. По умолчанию эти типы форматируются для человека, например, 3.5mb вместо 3763212. Человеческие значения не могут быть сортированы по числовому порядку, поэтому для операций, где порядок важен, можно изменить этот формат.
Предположим, вам нужно найти самый большой индекс в кластере (используемое хранилище всеми фрагментами, а не количество документов). API /_cat/indices идеально подходит. Вам нужно добавить три вещи в запрос API:
- Параметр запроса
bytesсо значениемbдля получения разрешения на уровне байтов. - Параметр (сортировка)
sсо значениемstore.size:descи запятой сindex:ascдля сортировки вывода по хранилищу фрагмента в порядке убывания, а затем по имени индекса в порядке возрастания. - Параметр (подробно)
vдля включения заголовков столбцов в ответ.
resp = client.cat.indices(
bytes="b",
s="store.size:desc,index:asc",
v=True,
)
print(resp) response = client.cat.indices( bytes: 'b', s: 'store.size:desc,index:asc', v: true ) puts response
const response = await client.cat.indices({
bytes: "b",
s: "store.size:desc,index:asc",
v: "true",
});
console.log(response); GET _cat/indices?bytes=b&s=store.size:desc,index:asc&v=true
API возвращает следующий ответ:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size dataset.size yellow open my-index-000001 u8FNjxh8Rfy_awN11oDKYQ 1 1 1200 0 72171 72171 72171 green open my-index-000002 nYFWZEO7TUiOjLQXBaYJpA 1 0 0 0 230 230 230
Если вы хотите изменить единицы измерения времени, используйте параметр time.
Если вы хотите изменить единицы измерения размера, используйте параметр size.
Если вы хотите изменить единицы измерения байтов, используйте параметр bytes.
Ответ в формате текст, json, smile, yaml или cbor
% curl 'localhost:9200/_cat/indices?format=json&pretty'
[
{
"pri.store.size": "650b",
"health": "yellow",
"status": "open",
"index": "my-index-000001",
"pri": "5",
"rep": "1",
"docs.count": "0",
"docs.deleted": "0",
"store.size": "650b"
}
] В настоящее время поддерживаются следующие форматы (для параметра ?format=): - текст (по умолчанию) - json - smile - yaml - cbor
Альтернативно, вы можете установить заголовок HTTP "Accept" на соответствующий формат мультимедиа. Все вышеперечисленные форматы поддерживаются, параметр GET имеет приоритет над заголовком. Например:
% curl '192.168.56.10:9200/_cat/indices?pretty' -H "Accept: application/json"
[
{
"pri.store.size": "650b",
"health": "yellow",
"status": "open",
"index": "my-index-000001",
"pri": "5",
"rep": "1",
"docs.count": "0",
"docs.deleted": "0",
"store.size": "650b"
}
] Сортировка
Каждая из команд принимает параметр запроса s, который сортирует таблицу по указанным в качестве значения параметра столбцам. Столбцы указываются либо по имени, либо по псевдониму и предоставляются через запятую. По умолчанию сортировка выполняется по возрастанию. Добавление :desc к столбцу инвертирует порядок для этого столбца. :asc также принимается, но демонстрирует такое же поведение, как порядок сортировки по умолчанию.
Например, со строкой сортировки s=column1,column2:desc,column3 таблица будет отсортирована по столбцу1 в порядке возрастания, по столбцу2 в порядке убывания и по столбцу3 в порядке возрастания.
resp = client.cat.templates(
v=True,
s="order:desc,index_patterns",
)
print(resp) response = client.cat.templates( v: true, s: 'order:desc,index_patterns' ) puts response
const response = await client.cat.templates({
v: "true",
s: "order:desc,index_patterns",
});
console.log(response); GET _cat/templates?v=true&s=order:desc,index_patterns
возвращает:
name index_patterns order version pizza_pepperoni [*pepperoni*] 2 sushi_california_roll [*avocado*] 1 1 pizza_hawaiian [*pineapples*] 1
© 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/cat.html