elasticsearch基础--搜索操作

Updated on with 0 views and 0 comments

一、获取基础数据

访问7.4版本测试数据下载地址

获取到数据后,通过kibana批量添加数据

image.png

二、搜索

2.1 match

对指定字段进行分词匹配数据

image.png

match中,可以通过空格分隔,输入多个词进行匹配,会将符合条件的结果输出

image.png

此时如果我们搜索的文本本身就是带着空格的,不希望对他进行分词,则使用match_prase进行匹配

image.png

2.2 只查询指定字段

前面使用了match关键字查询数据,发现字段很多,可以通过source关键字,来过滤自己需要的字段

image.png

2.3 排序

使用sort关键字可以按照指定字段规则进行排序,如下按照年龄降序

image.png

2.3 分页查询

分页查询使用from、size实现,等同于mysql的limit的两个参数

  • from:数据开始下标
  • size:查询的数据条数

image.png

2.4 bool查询

前面我们使用了match来匹配字段,但是如果我们有多个查询字段,则可以通过bool来组合这些查询条件

2.4.1 must

使用must命令在查询数据时,会查找符合must中定义的所有规则的数据,等同于数据库的and条件

image.png

2.4.2 should

should命令在查询数据时,查询的数据中,只要有任意一个字段符合should中定义的条件就返回,等同于数据库操作中的or

image.png

2.4.3 must not

must not可以查询不符合条件的数据,等同于数据库操作中的不等于

image.png

2.4.4 filter

filter可以过滤数据,可以用来根据指定的范围来查询数据

  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于

下述代码查询0<=age<=100且账号不等于1的人,

image.png

2.5 term查询

  • term查询只根据倒排索引直接查询而不会做分词后再查
  • 而match会分词后再查询

2.6 keyword和text两个字段类型

  • keyword类型的字段不会被分词器解析
  • text会被解析

以下面的分词结果为为例,如下所示,指定analyzer为keyword时后,不会被拆分,但是指定analyzer为standard后,对text进行了分词

image.png

image.png

2.7 高亮显示

使用highlight字段可以设置指定字段为高亮

image.png

2.7.1 自定义标签

这里我们也可以自定义标签

  • pre_tags 高亮内容的前缀标签
  • post_tags 高亮内容后缀标签

image.png

2.8 模糊查询

模糊查询可以使用fuzzy来操作,这里的模糊查询与数据库的模糊查询有区别,例如现在有个文本在elasticsearch中存储为hello,然后我输入了一个文本hallo进行匹配,这两个文本时有差异的,但是我可以通过 fuzziness来指定允许的偏差字符数,默认值为2

如下的搜索,搜索的结果与搜索条件的误差字符均不超过2个

image.png


标题:elasticsearch基础--搜索操作
作者:wenyl
地址:http://www.wenyoulong.com/articles/2023/08/01/1690873696955.html