Я пытаюсь выяснить, почему наш новый кластер работает медленно и обнаружил некоторые странные вещи.
При выполнении этого:
{
"query": {
"bool": {
"filter": [
{ "term": { "reference_id": 4489 } },
{ "range": { "created_at": { "gte": "2020-03-15" }} }
]
}
}
}
И проверьте профилирование, похоже, это проводя много времени в «совпадении»:
IndexOrDocValuesQuery
created_at:[1584230400000 TO 9223372036854775807]
match, 2.3s, 84.2%
При выполнении следующего запроса, который фильтрует по другому полю (то же отображение), он вообще не использует match
:
{
"query": {
"bool": {
"filter": [
{ "term": { "root_id": 3413 } },
{ "range": { "created_at": { "gte": "2020-03-15" }} }
]
}
}
}
Теперь он просто проводит некоторое время в advance
(соответствует 0):
IndexOrDocValuesQuery
created_at:[1584230400000 TO 9223372036854775807]
advance, 376.5ms, 82.5%
Оба root_id
и reference_id
отображаются как long
(изменится на keyword
как я думаю, это будет как минимум быстрее).
Теперь два запроса фильтруются по разным полям, но все равно одного и того же типа, почему в первом запросе выполняется "совпадение" в slooow ? Любые идеи? Могу ли я понять это как-нибудь? Кроме того, почему это делает "матч" вообще? Я делаю только фильтрацию, поэтому не нужно делать оценки, верно?