elasticSearch学习(五)

elasticSearch学习(五)

简单搜索!

可以根据默认的映射规则,产生基本的查询!

GET /userlist/user/_search?q=name:老崔

image-20200712110808969

复杂搜索!

复杂操作搜索 select ( 排序,分页,高亮,模糊查询,精准查询!)

GET userlist/user/_search
{
  "query": {
    "match": {
      "name": "崔"
    }
  }
}

image-20200712111319872

_source 输出结果,等同于mysql : select name, age from user;

image-20200712111540099

排序

image-20200712112035362

分页查询

image-20200712112345264

我们可以通过设置"from"和"size"参数来设置分页查询的相关信息。

布尔值查询

通过布尔值查询的方式我们可以实现类似于数据库的多条件查询:

image-20200715161943487

例如通过这个must指令就可以实现多条件查询,在上图中,只有同时满足name中包含老崔,并且年龄为88的数据才会被查询出。简单的来说满足这两个条件就会返回true的布尔值然后被查询出来,所以被叫做布尔值查询,相当于sql语句中的where and条件语句。

image-20200715162308324

而should命令则表示后方的两个条件只需要满足其中之一即可,就类似于sql语句中的where or条件语句。

image-20200715162411744

同理,must_not表示查询出不满足条件的数据,例如上图查询出年龄不为18的信息,相当于sql中的not条件语句。

过滤查询操作

在满足多种条件查询的同时,es也支持我们对查询的数据进行进一步的筛选过滤。

image-20200715162949063

通过上图的配置可以实现按照年龄大小进行进一步过滤的操作,gte是大于等于操作,lte是小于等于操作,gt只表示大于操作,lt只表示小于操作。

同时,也可以同时设置大于和小于来进行值的区间搜索操作,相当于sql中的between and条件。

image-20200715163034131

匹配多个条件查询

匹配多个条件查询就有点类似于sql中的in关键字。

image-20200715163439604

如图所示,tags是兴趣标签,在数据中是以数组的形式存在的,也就是说有多个值,通过这种方式就可以进行多个值的随意匹配。

精确匹配term

term精确匹配和match的不同:

term会将条件依据倒排索引进行精确匹配,而match则会将查询条件进行分词然后再匹配。简单的来说,match会产生类似与模糊查询的效果,而term不会,条件匹配不上即使数据包含查询条件也不会被查询出来。

关于text和keyword类型:

text类型和keyword的不同之处在于,text会被分词器进行分词,而keyword不会被分词器分词。

image-20200715164003928