Spring Data ElasticSearch 实现相似度查询

在使用ElasticSearch时,有时会遇到这样的类似的业务场景:检索与给定手机号相似的人,例如给定手机号18000000000,系统需检索出诸如手机号为18000000001,18000000002,18100000001等等相似的人的信息。就以上的业务场景,我们使用ElasticSearchFuzzy Query来实现手机号的相似度检索。本例使用的spring boot版本为2.0.6.RELEASE,spring-boot-starter-data-jest版本为3.1.2.RELEASE

1.前期准备工作

  • Entity:
@Document(indexName = "person", type = "person", shards = 3, replicas = 1)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    @Id
    private String phoneNum;
    private String name;
    private String gender;
    private Integer age;
}

  • Repository:
public interface PersonRepository extends ElasticsearchRepository {

}

2.构造Fuzzy Query查询条件

QueryBuilder queryCondition = QueryBuilders.fuzzyQuery("phoneNum", fuzzyPhoneNum).fuzziness(Fuzziness.AUTO);
personRepository.search(queryCondition);

说明:

  • QueryBuilders.fuzzyQuery('字段名', 字段值)
  • fuzziness()方法以编辑距离为入参,取值有四种:0,1,2,‘AUTO’

源码地址:https://github.com/a479159321/elasticsearch-fuzzy-query

你可能感兴趣的:(Spring,Data,Spring,Data,ElasticSearch,es,相似度查询,模糊查询,ElasticSearch)