как ускорить выполнение запросов на соответствие es

#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 мс. Похоже, ты ждешь ИО. Если у вас достаточно памяти, чтобы соответствовать индексу, вы можете выполнить несколько разогревающих запросов, чтобы загрузить его в память и выполнить быстрый поиск по нему. Вы также можете добавить больше узлов в свой кластер и увеличить количество сегментов и реплик, чтобы разделить нагрузку на эти узлы.

Если вы не в состоянии обновить систему, вы можете попытаться добавить некоторые фильтры в свой запрос, чтобы ограничить количество сопоставляемых документов. Это также должно ускорить время вашего запроса.