Почему время, затрачиваемое на «прокрутку» в разное время в «запросе по запросу» - PullRequest
0 голосов
/ 24 апреля 2019

Вasticsearch я использовал термин запроса для поиска некоторых записей. Однако, когда результаты поиска велики (около 4700 записей), «запрос запроса» стоит слишком много времени (около 8 минут). Между тем, время, затрачиваемое на scroll , сильно отличается. Я создаю график, чтобы показать разницу. Ось X графика - это число scroll (0 - первый запуск прокрутки). Ось Y - это затраченное время.

enter image description here

Почему время, затрачиваемое на «прокрутку», отличается в разное время в «запросе по запросу »asticsearch?

мой документ выглядит как

{
    "id": "doc1"
    "text": "AAAAABBBBHHHHHKAAAAAAAAAAUUUUUKAAAAAAAAAAAK"
}

поле текст имеет анализатор, который разбивает строку после буквы K

Я хочу найти все документы, которые содержат термин AAAAABBBBHHHHHK , и мой код поиска Java

SearchResponse response = esClient.prepareSearch("my_index")
                .addSort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC)
                .setScroll(new TimeValue(60_000))
                .setQuery(QueryBuilders.matchPhraseQuery("text", "AAAAABBBBHHHHHK"))
                .setSize(100)
                .get();
do {
            for (SearchHit hit : response.getHits().getHits()) {
                 ......
            }
            response = esClient.prepareSearchScroll(response.getScrollId())
                    .setScroll(new TimeValue(60_000))
                    .get();
        } while (response.getHits().getHits().length != 0);

Кроме того, я также хочу знать, существует ли какой-либо способ оптимизации производительности поиска для сокращения времени поиска?

Примечание:

  • версия эластичного поиска: 6.6.1
  • asticsearch jvm config
  • индексный осколок: 1 осколок, без реплики, размер осколка составляет 74 ГБ (в настоящее время у меня только один сервер)
-Xms4g
-Xmx4g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...