Отличительный в эластичном поиске Java Springboot - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь получить отличное название города из некоторого индекса пин-кода в упругом поиске, он содержит пин-код и название города, поэтому существует многократный пин-код с тем же названием города.

Итак, что происходит при поиске по названию города, я получаю несколько записей, так что сейчас я сделал временную запись.

исправить, как получить все записи, а затем сделать все по-другому.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...