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

Почему время, затрачиваемое на «прокрутку», отличается в разное время в «запросе по запросу »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