Elasticsearch中的Term查询和全文查询

本文详细介绍了Elasticsearch中的各种查询方式,包括term、fuzzy、ids、prefix、range、regexp、match等,重点讨论了全文查询与精确查询的差异,并提供了实例演示。同时,提到了Elasticsearch的分析过程对查询结果的影响,以及如何利用exists和bool查询处理特定场景。
摘要由CSDN通过智能技术生成

“analyzer”: “standard”,

“text”: [“lonely wolf”]

}

在这里插入图片描述

可以看到,lonely wolf 被分成了 lonelywolf 两个单词,所以我们将 lonely wolf 作为一个进行查询自然是无法查询到结果的。

这里有个地方需要注意,如果我们存入的是大写单词,如 Lonely Wolf,分词器也是一样的结果,也就是会将大写字母统一转化为小写进行存储,所以进行全文查询的时候也是无法查询出结果。

exists 查询

用来判定是否存在某一个字段,返回包含字段的任何索引值的文档。

GET index_002/_search

{

“query”: {

“exists”: {

“field”: “address”

}

}

}

这里返回的结果就是第三条和第四条数据,像 null 值和空数组 [] 不会被返回。

如果想要返回 null 值或者空数组 [] 的数据,那么可以利用 bool 查询的 must_not 语句:

GET index_002/_search

{

“query”: {

“bool”: {

“must_not”: [

{

“exists”: {“field”: “address”}

}

]

}

}

}

fuzzy 查询

用于近似查询,比如我们有时候在用百度搜索的时候,输错了字会被纠正:

在这里插入图片描述

一般情况下有一个单词错误的情况下,fuzzy 查询可以找到另一个近似的词来代替,主要有以下场景:

  • 修改一个单词,如:box—>fox

  • 移除一个单词,如:black–>lack

  • 插入一个单词,如:sic–>sick

  • 转换两个单词顺序,如:act–>cat

为了可以查询到这种近似的单词,fuzzy 查询需要创建一个所有近似词的集合,这样搜索的时候就可以采用精确查询找到近似的词来代替查询。

比如下面这个查询就可以查询出前面四条数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值