在Elastic Search for Java Springboot中与众不同

时间:2018-10-29 12:29:46

标签: java spring-boot elasticsearch

我正在尝试通过弹性搜索中的一些pincode索引来获取不同的城市名称,其中包含pincode和cityname,因此会有多个具有相同城市名称的pincode。

所以在搜索城市名称时发生了什么事,我得到了多个记录,所以现在我做了一个临时记录。

修复像获取所有记录然后采取不同的操作。

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;
    }  

私有静态谓词distinctByKey(函数keyExtractor){

看到的地图=新的ConcurrentHashMap <>();         返回t-> seen.putIfAbsent(keyExtractor.apply(t),Boolean.TRUE)== null;

}

我也尝试过聚合,但是这对我也不起作用,我正在将弹性搜索6.4SpringBoot一起使用。

0 个答案:

没有答案