Elasticsearch文档增删改查-Elasticsearch

概述

DSL(Domain Specific Language):
简单来说,DSL就是ES的一种查询方式,DSL基于JSON实现了直观简单的结构化查询功能。由于DSL查询是JSON格式的,所以更加的灵活,而且可以同时包含查询和过滤器,咱们可以很轻松的构造出复杂的查询功能。

基于Restful风格

基于这种风格是软件操作更简洁、更有层次、更易于实现缓存等。

基本Rest命令说明

POST

  • 创建文档(随机文档id)
    url地址:localhost:9200/索引名称/类型名称
    描述:创建文档(随机文档id)
  • 创建文档(指定文档id)
    url地址:localhost:9200/索引名称/类型名称/文档id
    描述:创建文档(指定文档id)
  • 修改文档
    url地址:localhost:9200/索引名称/文档id/_update
    描述:修改文档
  • 查询所有文档
    url:localhost:9200/索引名称/类型名称/_search
    描述:查询所有文档数据

PUT

  • 修改/创建文档(指定文档id)
    url地址:localhost:9200/索引名称/类型名称/文档id
    描述:修改/创建文档(指定文档id)

DELETE

  • 删除文档
    url:localhost:9200/索引名称/类型名称/文档id
    描述:删除文档

GET

  • 查询文档通过文档id
    url:localhost:9200/索引名称/类型名称/文档id
    描述:查询文档通过文档Id

添加文档

PUT/POST /索引名/类型名/文档id
{请求体}
  1. 注意ES7xxx版本之后,不建议是自定义类型,类型名称可以写死为:_doc;
  2. 使用上面的语法,如果索引不存在,ES会自动添加索引、Map,我们也可以收到创建索引、Map;
PUT /test2/_doc/3
{
  "name":"王老五",
  "age":24,
  "dees":"砖石王老五",
  "tags":["有钱","单身"]
}
# 或者
POST /test2/_doc/6
{
  "name":"王老五",
  "age":24,
  "dees":"砖石王老五",
  "tags":["有钱","单身"]
}
# 或者不指定文档id
POST /test2/_doc
{
  "name":"王老五",
  "age":24,
  "dees":"砖石王老五",
  "tags":["有钱","单身"]
}

更新文档

全量更新

PUT /索引名称/_doc/文档id

在这里插入图片描述

局部更新

POST /索引名称/_update/文档id
或者
POST /索引名称/_doc/文档id/_update

只会更新name字段值,其他的字段值不会修改。
示例:

POST /test2/_update/3
{
  "doc":{
    "name":"王老三"
  }
}

删除文档

根据文档id删除

DELETE /索引名称/_doc/文档id

示例:

DELETE /test2/_doc/1

查询文档

指定文档Id获取文档记录

GET /索引名称/_doc/文档id

示例:
在这里插入图片描述

简单条件搜索

  • 根据简单条件查询索引中的文档
    GET /索引名称/_search?q=字段名:字段值
    注意:逻辑符必须大写,比如AND 而不是and。
    示例:
GET /article/_search?q=id:3 OR title:"test1"

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

  • 查询索引中的全部文档
GET /索引名称/_search

全局查询:
在这里插入图片描述

复杂条件搜索(类似MySql的select(排序、分页、高亮、模糊、精准))

查询的参数体使用JSON结构,输出结果有匹配总数,最高匹配度等。

GET /索引名称/_search
{
  body
}

示例:
在这里插入图片描述

嵌套查询

GET /test/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "customerId": [
              "fdafda"
            ]
          }
        },
        {
          "nested": {
            "path": "face",
            "query": {
              "terms": {
                "face.name": [
                  "ttt"
                ]
              }
            }
          }
        }
      ]
    }
  }
}

指定输出的字段

在这里插入图片描述

针对某个字段进行排序

示例:

GET /test2/_search
{
  "query":{
    "match":{
      "name":"王老五"
    }
  },
  "_source":["name","age"],
  "sort":[
    {
      "age":{
        "order":"desc"
      }
    }
    ]
}

在这里插入图片描述

分页查询

from:起始,size:查询个数
在这里插入图片描述

布尔查询

must(类似于and)

所有条件都要符合 where id = 1 and name =xxx
在这里插入图片描述

should(类似or)

所有条件都要符合 where id = 1 or name = xx
在这里插入图片描述

must_not(即not)

所有条件满足where name is not xxx
在这里插入图片描述

过滤器filter,对数据进行过滤
gt:大于; gte:大于等于; lt:小于; lte:小于等于

示例:
在这里插入图片描述

匹配多个条件

输入多个条件,用空格隔开。
结果按照匹配度排序。
比如,对tags字段匹配 钱 、单身两个条件
在这里插入图片描述

精确查询

term查询:直接通过倒排索引指定的词条进行精确查询(完全匹配)。
match查询:会使用分词器解析(先分析文档,然后再通过分析的文档进行查询)。
在这里插入图片描述

多值匹配精确查询

在这里插入图片描述

嵌套查询

GET /company_data_index/_search
{
    "query": {
        "nested": {
            "path": "all_year_credit_info", #path为路径
            "query": {
                "bool": {
                    "must": [
                        { "term": { "all_year_credit_info.year": 1577808000 }},
                        { "term": { "all_year_credit_info.level": 1 }}
                    ]
                }
            }
        }
    }
}

高亮查询

在这里插入图片描述

参考

ElasticSearch7.6 基本操作(四)
最清晰易懂的Elasticsearch操作手册|收藏夹必备

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

融极

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值