Я недавно работаю сasticsearch, и у меня есть вопрос. Я использую прокрутку для получения объектов из упругости более 10_000, максимальный размер, который я могу получить, составляет 100_000. Я выполняю поиск по многоугольнику и не могу получить свой объект, если он не равен 100_000. Например, если у меня есть 7000 объектный код выше, не возвращая их мне.
@Override
public SearchRequest buildRequest(SearchPolygonParameters args) {
final SearchRequest searchRequest = new SearchRequest().scroll(TimeValue.timeValueMinutes(elasticScrollProperties.getTime()));
final SearchSourceBuilder searchSourceBuilder = prepareSearchSourceBuilder(args);
return searchRequest.source(searchSourceBuilder);
}
private SearchSourceBuilder prepareSearchSourceBuilder(SearchPolygonParameters searchPolygonParameters) {
final SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
final GeoPolygonQueryBuilder geoPolygonQueryBuilder = geoPolygonQuery(GeoLocationModelFieldName.LOCATION.name().toLowerCase(), searchPolygonParameters.getGeoPoints());
searchSourceBuilder.query(geoPolygonQueryBuilder);
searchSourceBuilder.size(elasticScrollProperties.getSize());
return searchSourceBuilder;
}
После того, как я создаю запрос, я делаю это:
public SearchResponse sendRequestToElastic(SearchPolygonParameters args) throws IOException {
final SearchRequest searchRequest = searchByPolygonRequestBuilder.buildRequest(args);
SearchResponse response = elasticDao.search(searchRequest, options);
response = elasticDao.searchScroll(new SearchScrollRequest(response.getScrollId()).scroll(TimeValue.timeValueMinutes(elasticScrollProperties.getTime())), options);
return response;
}
Я хочу получить все объекты, которые меньше или равны максимальному размеру.
Например, этот jsonу меня хорошо работает:
localhost:9200/geo_object/_search?scroll=1m
{
"size": 10000000,
"query": {
"bool" : {
"must" : {
"match_all" : {}
},
"filter" : {
"geo_polygon" : {
"location" : {
"points" : [
{"lat" : 50.064135, "lon" : 36.026733},
{"lat" : 49.781764, "lon" : 36.152221},
{"lat" : 49.848132, "lon" : 36.598222},
{"lat" : 50.207628, "lon" : 36.262619}
]
}
}
}
}
}
}
Возвращает мне 7485 документов.
Почему так происходит, что я пропустил? Как я могу это исправить? Может быть, лучше использовать SearchAfter API?