Elasticsearch полнотекстовый запрос иногда стоит слишком много времени - PullRequest
0 голосов
/ 25 сентября 2019

Основные конфигурации :

  • кластер: два узла в качестве основного приемлемого узла и узла данных
  • es версия: 7.2.0
  • Размер кучи jvm: 31 ГБ на узел
  • память узла: 256 ГБ на узел
  • основной / реплики реплики: 1/1
  • диск: 2 ТБ + на узел
  • режим развертывания: докер
  • хост-система: debian 8
  • развертывание конфигурации:
    docker run -d --name esnode01 \
            -v /home/workspace/elasticsearch/data:/usr/share/elasticsearch/data \
            --ulimit memlock=-1:-1 \
            --ulimit nofile=65535:65535 \
            -p 9200:9200 \
            -p 9300:9300 \
            -e node.name=esnode01 \
            -e node.data=true \
            -e node.master=true \
            -e network.publish_host=$ip01 \
            -e discovery.seed_hosts=$ip02:9300 \
            -e cluster.initial_master_nodes=esnode01,esnode02 \
            -e cluster.name=es-docker-cluster \
            -e bootstrap.memory_lock=true \
            -e "ES_JAVA_OPTS=-Xms31g -Xmx31g" \
            -e http.cors.enabled=true \
            -e http.cors.allow-origin=* \
            --restart=always \
            docker.elastic.co/elasticsearch/elasticsearch:7.2.0
  • сопоставления индексов:
        {
          "mapping": {
            "properties": {
              "question": {
                "type": "text"
              },
              "update_time": {
                "type": "date"
              }
            }
          }
        }
  • индекс документов: 11k
  • ps:
    1. столбец вопрос китайские слова
    2. включен медленный поиск журнала "index.search.slowlog.level":"debug", "index.search.slowlog.threshold.fetch.debug": "5ms", "index.search.slowlog.threshold.query.debug": "1ms"
    3. без высоких параллельных запросов

Фрагмент запроса:

POST /index_name/_search
    {
        "from": 0,
        "size": 50,
        "query": {
            "match": {
                "question": text
            }
        }
    }

Проблема: Время выполнения большинства запросов <20 мс. Время от времени поле «взял» равно100 мс, 200 мс, до 900 + мс .. </p>

Анализ: 1. kibАналитический мониторинг не показывает высокой скорости индексации, длительного времени GC, высокой загрузки системы, двух сегментов, даже большой задержки поиска и запросов;2. search_slow_log не показывает запросов с большим количеством времени, API профиля показывает очень маленький запрос time_in_nano

Любые советы действительно приветствуются

1 Ответ

0 голосов
/ 29 сентября 2019

Есть отличная статья о , как настроить скорость поиска .

В вашем случае я бы рекомендовал рассмотреть следующее.Во-первых, если возможно, используйте SSD-диск.

Во-вторых, попытайтесь установить index.refresh_interval, скажем, на 10 секунд или более.Это может помочь в случае, когда вы выполняете индексацию и удаление документов в фоновом режиме.С большим интервалом обновления это приведет к аннулированию кэша файловой системы для сегментов индекса, которые обновлялись реже.

Я также рекомендовал бы взглянуть также на общие рекомендации .

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...