Я использую Elasticsearch 7.6 и клиентский API PHP для всех операций. Я создал настройки и сопоставления индекса elasticsearch следующим образом
$params = [
'index' => $index,
'body' => [
'settings' => [
"number_of_shards" => 1,
"number_of_replicas" => 0,
"index.queries.cache.enabled" => false,
"index.soft_deletes.enabled" => false,
"index.refresh_interval" => -1,
"index.requests.cache.enable" => false,
"index.max_result_window"=> 2000000
],
'mappings' => [
'_source' => [
"enabled" => false
],
'properties' => [
"text" => [
"type" => "text",
"index_options" => "docs"
]
]
]
]
];
Мой логический поисковый запрос OR выглядит следующим образом
$json = '{
"from" : 0, "size" : 2000000,
"query": {
"bool": {
"filter": {
"match" : {
"text" : {
"query" : "apple orange grape banana",
"operator" : "or"
}
}
}
}
}
}';
Я проиндексировал 2 миллиона документов таким образом, что все документы соответствуют запросу, и я также получаю все документы, как и ожидалось. Поскольку я сопоставляю все документы, я избежал оценки с помощью фильтра в запросе bool.
Но в моем файле журнала я постоянно получаю следующее сообщение, пока не завершится выполнение запроса. Иногда я получал то же сообщение при массовом индексировании документов
[2020-05-15T19:15:45,720][INFO ][o.e.m.j.JvmGcMonitorService] [node1] [gc][14] overhead, spent [393ms] collecting in the last [1.1s]
[2020-05-15T19:15:47,822][INFO ][o.e.m.j.JvmGcMonitorService] [node1] [gc][16] overhead, spent [399ms] collecting in the last [1s]
[2020-05-15T19:15:49,827][INFO ][o.e.m.j.JvmGcMonitorService] [node1] [gc][18] overhead, spent [308ms] collecting in the last [1s]
Я выделил 16 ГБ для своей кучи памяти. Никаких других предупреждений в журнале elasticsearch не отображается. В чем может быть причина? или это ожидается при извлечении огромного количества документов ?. Я понимаю API прокрутки, но мне любопытно, почему это происходит, когда я использую большое значение для index.max_result_window. Помощь очень ценится? Заранее спасибо!