Elasticsearch入门(二)-- 基本的增删改查以及复杂查询语句

8 篇文章 0 订阅
2 篇文章 0 订阅

一、增删改查基本操作

1、创建一个索引

PUT /索引名/类型名/文档id
{请求体}

命令如下:
在这里插入图片描述
执行结果:
在这里插入图片描述

2、创建索引,并设置字段类型

PUT /索引名/类型名/文档id
{"mapping":{设置字段类型}}

在这里插入图片描述

3、获取指定索引的信息

GET 索引名

在这里插入图片描述
在这里插入图片描述

4、修改数据

1)、用put请求修改

在这里插入图片描述
注意,put请求是全量修改,即全字段修改,如果有字段不传,则覆盖为空
在这里插入图片描述

2)、用post请求修改

我们现在推荐用post请求修改,因为post请求比较灵活,非全量修改

POST /索引名/_update/文档id

在这里插入图片描述
在这里插入图片描述

5、简单的条件查询

GET 索引名/_search?q=字段名:查询的值

这里现在推荐,不带type,即语句中的 /_doc 不再携带
在这里插入图片描述
在这里插入图片描述

6、删除

1)、删除索引

DELETE 索引名

2)、删除文档

DELETE 索引名/_doc/文档id

二、复杂查询

上面说明的查询中,查询结果为:
在这里插入图片描述
上图中的_score字段,指的是查询出的结果的权重,以后搜索数据时,可以依据权重来显示
首先我们先创建两个文档,作为之后查询的数据
在这里插入图片描述

1、查询条件封装为对象

GET 索引名/_search
{
  "query":{        // 查询条件
    "match": {     // 查询对象
      "name": "三" // 查询的参数
    }
  }
}

在这里插入图片描述
在这里插入图片描述

2、只查指定的数据字段

在这里插入图片描述
在这里插入图片描述

3、排序

在这里插入图片描述
在这里插入图片描述

4、分页查询

在这里插入图片描述
数据下标也是从0开始

5、布尔查询

1)、must (类似mysql中的and)

在这里插入图片描述

2)、should (类似mysql中的 or)

在这里插入图片描述

3)、must_not (类似mysql中的 not )

在这里插入图片描述

6、过滤器

在这里插入图片描述

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

7、匹配多个条件

在这里插入图片描述

8、使用倒排索引查询

term 查询是直接通过倒排索引指定的词条进行精确查找的
首先我们看match查询:
在这里插入图片描述
我们可以发现,这里不仅将 【三狗】这一条数据查询出来,而且将【张三】那一条数据也查出来了,原因就是 match 查询会使用分词器,将要查的 【三狗】这个查询条件,进行了分词,然后再查询。
接下来我们看使用 term来进行匹配查询:
在这里插入图片描述
结果非常的amazing呀,竟然查不到,是怎么回事呢?
原来,term会通过倒排索引来进行查询,倒排索引是以一个个的词汇作为索引,我们这里的【三狗】,不会识别为一个词汇,就会进行分词,分为【三】和【狗】,所以倒排索引中,没有以【三狗】的词汇索引,是有【三】和【狗】的词汇索引,所以这里使用term查询【三狗】的时候,在倒排索引里查不到。

1)、keyword类型

如果将字段类型设置为keyword的话,此字段就不会被分词,如下图,我们先创建一个索引,并设置好字段的类型,将des字段设置为keyword
在这里插入图片描述
然后添加好数据
在这里插入图片描述
然后,我们使用term,以name作为查询条件,查询
在这里插入图片描述
我们发现,能查到值,再接着,我们以des为条件查询
在这里插入图片描述
我们神奇的发现,查不到值,因为des字段的类型为keyword,倒排索引中不会分词,所以des字段的【三】,在倒排索引中没有,当然就查不到数据,那么我们以【法外狂徒张三】为条件查找呢?
在这里插入图片描述
可以看到,查到数据了。至此,我们可以明白,将字段类型设置为keyword后,就不会进行分词解析。

9、高亮查询

在这里插入图片描述
上图中的需要高亮的文字,默认是用 【em】标签来选中的,那如果我们想要自定义标签怎么办呢?如下图
在这里插入图片描述
至此,我们已经学习了

  • 匹配查询
  • 按照条件匹配
  • 精确匹配查询
  • 区间范围匹配
  • 匹配字段过滤
  • 多条件查询
  • 高亮查询

如果想要用类似mysql 中的 and 或者 or 条件查询,可以使用布尔查询;
如果想要用类似mysql 中的 范围查询,即大于或者等于之类的,可以使用filter过滤查询;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值