#elasticsearch #elastic-stack
#elasticsearch #эластичный стек
Вопрос:
Я пытаюсь использовать Scroll API для извлечения 100 тысяч записей из журналов Kibana. Размер по умолчанию установлен на 500, и у меня нет разрешения на его изменение. Я попытался прокрутить с помощью приведенной ниже команды:
curl -XPOST "http://elasticsearch.us-central1.gcp.cloud.internal/shared/_search?scroll=1mamp;size=500amp;pretty" -H "Content-Type: application/json" -d '{
"_source": ["message"],
"query": {
"match_phrase": {
"kubernetes.container_name": {
"query": "my-container-name"
}
}
}
}'
Результат выглядит примерно так:
{
"scroll_id": DnF1ZXJ5VGhlbkZldGNo5TkAA.... //300,000 characters long
"took" : 16626,
"timed_out" : false,
"_shards" : {
"total" : 7397,
"successful" : 7397,
"skipped" : 0,
"failed" : 0
},
"hits" : {
.....
Поскольку идентификатор прокрутки слишком длинный, я не могу передать его в Scroll API для получения следующего пакета результатов. Как я могу это решить? Связано ли это с большим количеством сегментов и есть ли какой-либо способ ограничить количество сегментов?
Ответ №1:
Основываясь на обсуждении в сообществе ES, похоже, существует прямая связь между длиной scroll_id и количеством сегментов в индексе.
Рекомендуется передавать scroll_id в теле запроса. Например:
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
}
есть ли какой-либо способ ограничить количество сегментов?
- Вы можете создать новый индекс с меньшим количеством сегментов
- Затем переиндексируйте данные в новый индекс, используя ReIndex API
- Нет способа уменьшить количество сегментов существующего индекса.
Комментарии:
1. Не могли бы вы принять это в качестве ответа тогда.
2. Я поддержал его. Как вы «принимаете это как ответ»?
3. Не хочу показаться бесполезным, но я не вижу «галочки», на которую можно нажать, чтобы отметить это как ответ. Я бы поделился скриншотом здесь, но, похоже, это не вариант.
4. @BruceMacKenzie только тот, кто задал вопрос, увидит эту галочку