API компактного и выровненного текста (CAT)
Введение
JSON — это здорово… для компьютеров. Даже если он отформатирован красиво, поиск взаимосвязей в данных утомителен. Человеческому глазу, особенно при просмотре терминала, нужен компактный и выровненный текст. API компактного и выровненного текста (CAT) предназначены для удовлетворения этой потребности.
API cat предназначены только для использования человеком с помощью консоли Kibana или командной строки. Они не предназначены для использования приложениями. Для потребления приложениями мы рекомендуем использовать соответствующий API JSON.
Все команды cat принимают параметр строки запроса help для отображения всех заголовков и информации, которую они предоставляют, а команда /_cat в одиночку перечисляет все доступные команды.
Общие параметры
Подробно
Каждая из команд принимает параметр строки запроса v для включения подробного вывода. Например:
GET _cat/master?v=true
Возможный ответ:
id host ip node u_n93zwxThWHi1PDBJAGAg 127.0.0.1 127.0.0.1 u_n93zw
Справка
Каждая из команд принимает параметр строки запроса help, который выведет доступные столбцы. Например:
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, который принудительно отображает только эти столбцы. Например:
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, чтобы включить заголовки столбцов в ответ.
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 yellow open my-index-000001 u8FNjxh8Rfy_awN11oDKYQ 1 1 1200 0 72171 72171 green open my-index-000002 nYFWZEO7TUiOjLQXBaYJpA 1 0 0 0 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.
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/7.17/cat.html