Я пытаюсь получить отличное название города из некоторого индекса пин-кода в эластичном поиске, он содержит пин-код и название города, поэтому есть несколько пин-кодов с тем же названием города.
Итак, что происходит при поиске с названием города, я получаю несколько записей, поэтому прямо сейчас я сделал временное.
исправить, например, получить всю запись, а затем сделать это отдельно.
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;
}
частный статический предикат ownByKey (функция keyExtractor) {
Карта замечена = новый ConcurrentHashMap <> (); return t -> seen.putIfAbsent (keyExtractor.apply (t), Boolean.TRUE) == null;
}
Я также пробовал агрегацию, но у меня это тоже не работает. Я использую эластичный поиск 6.4 с SpringBoot.
@Tim ya Его можно отфильтровать по пин-коду.




Можно фильтровать по пин-коду?