Я пытаюсь получить отличное название города из некоторого индекса пин-кода в упругом поиске, он содержит пин-код и название города, поэтому существует многократный пин-код с тем же названием города.
Итак, что происходит при поиске по названию города, я получаю несколько записей, так что сейчас я сделал временную запись.
исправить, как получить все записи, а затем сделать все по-другому.
public List<FcData> getCityFuzzy(String city){
SearchQuery searchQuery= (new NativeSearchQueryBuilder()).withQuery(QueryBuilders.matchQuery("city",city)
.prefixLength(1)
.fuzziness(Fuzziness.AUTO)
).build();
List<FcData> fcData=jestElasticsearchTemplate.queryForList(searchQuery,FcData.class);
fcData=fcData.stream()
.filter(distinctByKey(pr -> Arrays.asList(pr.getCity())))
.collect(Collectors.toList());
return fcData;
}
частный статический Predicate diverByKey (функция keyExtractor) {
Карта просмотрена = new ConcurrentHashMap <> ();
return t -> seen.putIfAbsent (keyExtractor.apply (t), Boolean.TRUE) == null;
}
Я также пробовал агрегацию, но у меня это тоже не работает. Я использую упругий поиск 6.4
с SpringBoot
.