32.ES中什么是fuzzy(模糊)查询?如何进行fuzzy查询?java如何进行fuzzy查询?嘻哈的简写笔记——Elastic Search

1.ES中什么是fuzzy(模糊)查询?如何进行fuzzy查询?

模糊查询,我们输入字符的大概,ES就可以去根据输入的内容大概去匹配一下结果;
注意:他和我们在MySQL中的模糊查询还是有区别的,他有个偏移值;比如:当我们在京东中输入appla 的时候他会出现许多apple(苹果),就像它有个自动修正似的;它就是按照匹配的相似度来的;也就是说,一些信息,有对的也有错误的,它会利用这些大概的信息,给我们匹配信息出来
他有几个属性,例如:设置保证前几个是不能出错,设置最大的偏移量(也就是可以错误几个值)

#模糊查询fuzzy
GET /book/novel/_search
{
  "query": {
    "fuzzy": {
      "name": {
        "value": "我的好",
        "fuzziness": 2     #偏差的个数
      }
    }
  }
}

解释:name字段中的数据和关键字**“我的好”进行匹配;”fuzziness”:2 含义是允许匹配的数字与关键字有最多两个字的偏差**(不同);

#模糊查询fuzzy
GET /book/novel/_search
{
  "query": {
    "fuzzy": {
      "author": {
        "value": "滔滔滔",
        "prefix_length": 1  #指定前面几个字符是不允许出现错误的
      }
    }
  }
}

解释:author字段中的数据和关键字“滔滔滔”,进行匹配;”prefix_length”: 1 含义是指定前面几个字符是不允许出现错误的;
注意:prefix_lengthfuzziness这两个属性是进一步筛选的,如果有些词语查不出来,原因是就算当没有这两个属性的时候也无法进行匹配出来;所以加上了这两个属性,就更不能匹配出来;这里要注意;如果有问题,就先把这两个属性先去掉试试;

2.java如何进行fuzzy查询?

@Test //fuzzy模糊查询
public void test18() throws IOException {
    //把字段名,和关键字作为参数传进去;
    QueryBuilder queryBuilder = QueryBuilders.fuzzyQuery("author","滔滔滔").prefixLength(3);
    ClientUtils.queryTemplate(indextName,typeName,queryBuilder);
}

。。。。。。。。。。。。。

嘻哈的简写笔记

。。。。。。。。。。。。。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值