В настоящее время я выполняю поисковый запрос elasti c по python:
{
"query": {
"match_all": {}
},
"size": 0,
"aggs": {
"my_unbiased_sample": {
"diversified_sampler": {
"max_docs_per_value": 3,
"field": "_index"
},
"aggs": {
"my_agg": {
"terms": {
"field": "_index"
}
}
}
}
}
}
Фактическая цель агрегирования - извлечь 3 документа на index
, где index
для каждого Документ - это дата его получения. Правильный ли этот конвейер с учетом того, что я пытаюсь сделать?
Время ожидания этого запроса истекло, так как имеется около 6 миллиардов документов. Я установил тайм-аут в виде es = Elasticsearch(['https://user:secret@localhost:xxx'], timeout=999999)
, но он все еще истекает (это и понятно). Мне нужно использовать shards
?
Стоит ли увеличивать значение timeout
? Что делать, если агрегация занимает больше времени, чем максимальное значение timeout
.