У меня есть один индекс со 100 миллионами документов, на 12 узлах данных (с 12 осколками), 16 ГБ оперативной памяти, 500G заполняют каждый узел;запрос является фильтром по biz id (ключевому слову) и диапазону дат и диапазону amt;самый большой бизнес-идентификатор имеет 20 миллионов документов, а 95% бизнес-идентификаторов имеют в среднем только 1000 документов;так что проблема в том, что когда запрос по наибольшему идентификатору, время отклика занимает 4 + с, для запроса небольшого идентификатора требуется всего 0,02 с, после того, как в профиле я найду разбивку next_doc, больше всего времени, как мне оптимизировать это?
Я не могу разделить самый большой идентификатор на другой индекс, потому что я делю индекс по месяцам, и я не могу предсказать будущий самый большой идентификатор.
запрос:
POST acoce01itftrxrtlevtindex20190101/_search
{
"size": 2,
"from": 0,
"profile": true,
"query": {
"bool": {
"filter": [
{
"term": {
"custId": "9000000001"
}
},
{
"terms": {
"actId": [
"182406121632442"
]
}
},
{
"range": {
"trxDtAndTm": {
"from": "2019-01-01",
"to": "2019-05-10",
"include_lower": true,
"include_upper": true,
"format": "yyyy-MM-dd"
}
}
},
{
"range": {
"trxAmtAbs": {
"from": 1,
"to": 9999999999,
"include_lower": true,
"include_upper": true
}
}
}
]
}
},
"sort": [
{
"trxDtAndTm": {
"order": "desc"
}
},
{
"actTrxSeqNbr": {
"order": "desc"
}
}
],
"_source": [
"trxSeq"
]
}