У меня есть запрос ElasticSearch, который, кажется, заставляет ElasticSearch возвращать 504 «Запрос не удалось получить на сервер (код состояния: 504)».Кажется, это связано с размером запроса, потому что, если я выберу некоторые параметры, он будет работать.
Я пытаюсь вернуть совпадающие данные для нескольких местоположений (может быть сотни) в течение нескольких дней (до 21 дня).Каждое местоположение должно смотреть на определенные временные рамки.Ниже приведен лишь небольшой пример более крупного запроса, но, по сути, это то же самое, только с гораздо большим количеством местоположений.
Есть ли лучший способ написать запрос, чем тот, который у меня сейчас есть, которого не было бышанс получить очень большой запрос, когда у меня много мест?
{
"size": 10,
"sort": [{
"@timestamp": {
"order": "asc"
}
}],
"_source": ["name", "location", "@timestamp"],
"query": {
"bool": {
"must": [{
"bool": {
"should": [{
"bool": {
"must": [{
"bool": {
"should": [{
"geo_polygon": {
"location": {
"points": ["-14.0625,12.65625", "-15.46875,12.65625", "-15.46875,11.25", "-14.0625,11.25", "-14.0625,12.65625"]
}
}
}]
}
}, {
"bool": {
"should": [{
"range": {
"@timestamp": {
"lte": 1537809912161,
"format": "epoch_millis",
"gte": 1537747200000
}
}
}]
}
}]
}
}, {
"bool": {
"must": [{
"bool": {
"should": [{
"geo_polygon": {
"location": {
"points": ["60.46875,22.5", "59.0625,22.5", "59.0625,21.09375", "60.46875,21.09375", "60.46875,22.5"]
}
}
}]
}
}, {
"bool": {
"should": [{
"range": {
"@timestamp": {
"lte": 1537808898616,
"format": "epoch_millis",
"gte": 1537747200000
}
}
}, {
"range": {
"@timestamp": {
"lte": 1537721508544,
"format": "epoch_millis",
"gte": 1537660800000
}
}
}]
}
}]
}
}]
}
}]
}
}
}