У меня есть около 165G данных, и я сохранил их на трех серверах эластичного поиска (каждый сервер имеет 32G памяти).Общий размер результирующего индекса (с именем my_index
) составляет 240,3 ГБ (198030346 документов), причем для индексов используется около 75 ГБ.Индекс my_index
имеет три основных сегмента и не содержит фрагментов реплики.
Индекс my_index
имеет два поля (имена field1
и field2
) с одним и тем же анализатором.Анализатор разделил содержимое на field1
и field2
по пробелам.Документ выглядит как
{
"field1": "AW110 AW111 AW112 AW113 AW1104 AW1103 AW11023 AW11012 AW1101 AW1102 AW1102 AW1101 AW11032 AW110 AW11032 AW11032",
"field2": "BP111 BP111 BP111 BP111 BP111 BP1110 BP111s BP111s BP111a BP111as BP1117 BP1119 BP11100 BP11100 BP11100 BP11111 BP111009 BP11122"
}
Мой основной запрос - term
запрос и phrase query
.Например, я хочу выполнить поиск по всем документам, содержащим термин AW111
, или выполнить поиск по всем документам, содержащим фразу AW110 AW111
.
. Я попытался повысить скорость поиска:
vm.swappiness
установлен на 1
. - , чтобы пользователь hjs , который устанавливает asticsearch , мог увеличить размер заблокированной памятибез ограничения.
hjs soft memlock unlimited
hjs hard memlock unlimited
- Enable `bootstrap.memory_lockedit` (set `bootstrap.memory_lock: true` in elasticsearch.yml)
Другая конфигурация
- Дескрипторы файлов (/etc/security/limits.conf)
hjs soft nofile 65536
hjs hard nofile 65536
- JVM (config / jvm.options)
-Xms5g
-Xmx5g
- Виртуальная память редактировать (/etc/sysctl.conf)
vm.max_map_count=655360
Это изображение показывает результат команды top
, когда я запускаю несколько term search
.Процесс 31283
- это эластичный поиск .

Изображение используется для отображения статуса кластера:

Мой вопрос: Когда я выполняю term query
для поиска документов, содержащих определенные термины, вероятно, большое количество документов соответствует термину,Поэтому, когда я ищу много терминов (обычно 10 000–40 000, и я использовал multi search
+ term query
), это требует слишком больших затрат времени, есть ли какое-либо отношение к улучшению скорости поиска?