【ES】Elasticsearch 操作(下)

  今天继续学习 ES 的操作,书接上回。没看过的可以先看之前的文章。

【ES】Elasticsearch 操作(上)

回顾一些之前的操作,下面继续学习新的操作。

9.高亮显示
GET xxx/_search
{
    "query":{
       "match":{
           "name": "张三 李四"
       }
    },
    "highlight": {
        "fields": {
            "name": {}
        }
    }
}
10.聚合

在 Elasticsearch 中,支持聚合操作,类似 SQL 中的 group by 操作。

GET  xxx/_search
{
    "aggs": {
        "all_interests": {
            "terms": {
                "field": "age.keyword"
            }
         }
    }
}

结果就是按照 age 的值进行聚合,并 count。

11.指定响应字段

在响应的数据中,如果我们不需要全部的字段,可以指定某些需要的字段进行返回。

GET  xxx/_doc/1001?_source=id,name

等价于:

GET xxx/_search
{
  "query": {
    "match": {
      "id": "1001"
    }
  },
  "_source": ["id","name"]
}
12.判断文档是否存在

如果我们只需要判断文档是否存在,而不是查询文档内容,那么可以:

HEAD  xxx/_doc/1001

存在返回:200 - OK

不存在返回:404 – Not Found

13.批量操作
13.1 批量查询
POST  xxx/_doc/_mget
{
  "ids" : [ "1001", "1003" ]
}
13.2 _bulk 操作

批量的插入、修改、删除操作都是通过 _bulk 的 api 完成的。

请求格式如下:

{ action: { metadata }}\n
{ request body    }\n
{ action: { metadata }}\n
{ request body    }\n
...

批量插入数据:

POST _bulk
{"create":{"_index":"xxxindex","_id":2001}}
{"id":2001,"name":"name1","age": 20,"sex": "男"}
{"create":{"_index":"xxxindex","_id":2002}}
{"id":2002,"name":"name2","age": 20,"sex": "男"}
{"create":{"_index":"xxxindex","_id":2003}}
{"id":2003,"name":"name3","age": 20,"sex": "男"}

批量删除数据:

POST _bulk
{"delete":{"_index":"xxxindex","_id":2001}}
{"delete":{"_index":"xxxindex","_id":2002}}
{"delete":{"_index":"xxxindex","_id":2003}}
14.分页

和 SQL 使用 LIMIT 关键字返回只有一页的结果一样,Elasticsearch 接受 from 和 size 参数:

  • size: 结果数,默认10
  • from: 跳过开始的结果数,默认0

如果你想每页显示5个结果,页码从1到3,那请求如下:

GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10
15.terms 查询

terms 跟 term 有点类似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么文档需要一起去做匹配:

POST xxx/_search
{
  "query" : {
      "terms" : { 
          "age" : [20,21]
    }
  }
}
16.range 查询

range 过滤允许我们按照指定范围查找一批数据:

范围操作符包含:

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

示例:

POST xxx/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 20,
        "lte": 22
      }
    }
  }
}
17.exists 查询

exists 查询可以用于查找文档中是否包含指定字段或没有某个字段,类似于 SQL 语句中的 IS_NULL 条件

POST xxx/_search
{
  "query": {
    "exists": { 
      "field": "mail"
    }
  }
}

欢迎关注。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值