#elasticsearch
Вопрос:
Существует индекс компании со многими записями
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open company KTngnM6ASD-_KdU0FFAWRA 1 0 95185696 31780899 26.5gb 26.5gb
при выполнении запроса на соответствие
{
"query": {
"match": {
"name": {
"query": "some Chinese com name",
"operator": "and"
}
}
}
}
если and
оператор use иногда не может найти никакого результата (потому что не все слова совпадают), но его использование or
занимает больше времени
например, поиск некоторых слов and
взял 3446
, но or
взял 23650
Если использовать or
, как ускорить производительность отклика?
Ответ №1:
Это звучит так, как будто ваша система серьезно недооценена для вашего индекса. Рассмотрите возможность обновления вашей машины, особенно памяти и использования твердотельных накопителей. Такие простые запросы не должны занимать более 400-500 мс. Похоже, ты ждешь ИО. Если у вас достаточно памяти, чтобы соответствовать индексу, вы можете выполнить несколько разогревающих запросов, чтобы загрузить его в память и выполнить быстрый поиск по нему. Вы также можете добавить больше узлов в свой кластер и увеличить количество сегментов и реплик, чтобы разделить нагрузку на эти узлы.
Если вы не в состоянии обновить систему, вы можете попытаться добавить некоторые фильтры в свой запрос, чтобы ограничить количество сопоставляемых документов. Это также должно ускорить время вашего запроса.