Я просканировал кучу статей и хочу найти самую актуальную статью каждый день.
Значение -> Я ищу, например. «Яблоко», а затем хотите 5 статей (по одной в день), принимая самые актуальные в день.
Java-код
public List<ArticleEntity> findByKeyword(String keyword, String dateFrom, String dateTo) {
TransportClient client = elasticSearchProvider.getClient();
SearchRequestBuilder requestBuilder = client.prepareSearch("summarizer").setTypes("article").setSearchType(SearchType.QUERY_THEN_FETCH);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
boolQueryBuilder.filter(
QueryBuilders.queryStringQuery(keyword + "*").analyzeWildcard(true)
);
DateHistogramAggregationBuilder dateHistogramAggregationBuilder =
AggregationBuilders.dateHistogram("date").field("publish_date").format("yyyy-MM-dd").dateHistogramInterval(DateHistogramInterval.DAY).subAggregation(
AggregationBuilders.topHits("top").size(1).explain(true)
).keyed(true);
requestBuilder.setQuery(boolQueryBuilder)
.addAggregation(dateHistogramAggregationBuilder);
SearchResponse response = requestBuilder.execute().actionGet();
List<ArticleEntity> articleEntityList = new ArrayList<>();
ObjectMapper oMapper = new ObjectMapper();
oMapper.setPropertyNamingStrategy(
PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
Histogram dateHits = response.getAggregations().get("date");
for (Histogram.Bucket entry : dateHits.getBuckets()) {
TopHits topHits = entry.getAggregations().get("top");
for (SearchHit hit : topHits.getHits().getHits()) {
Map<String, Object> source = hit.getSource();
if (source != null) {
articleEntityList.add(oMapper.convertValue(source, ArticleEntity.class));
}
}
}
return articleEntityList;
}
Проблема здесь в том, что размер корзины превышает 2000 -> в то время как для меня размер корзины должен быть где-то около 6-7 (я сканировал статьи за последние 6 дней).
Одна часть документа ES:
article_authors: "Dorothy Pitti",
facebook_score: 0,
keywords: "users,apps,nsfw,app,privacy,exchanges,best,screenshot,dont,sexting,messages,youre,good,features",
publish_date: "2018-09-14",
Итак, почему у меня неправильный размер ковша? Я уже пробовал разные форматы даты (включая время), но ничего не работает. Есть идеи?