我正在尝试通过弹性搜索中的一些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.4
与SpringBoot
一起使用。