05-关于文档的基本操作(重点)

关于文档的基本操作(重点)

基本操作回顾

基本操作

1、添加数据

PUT /kuangshen/user/1
{
  "name":"狂神说",
  "age":23,
  "desc":"一顿操作猛如虎",
  "tags":["技术宅","温暖","直男"]
}
PUT /kuangshen/user/2
{
  "name":"张三",
  "age":23,
  "desc":"法外狂徒",
  "tags":["交友","旅游","渣男"]
}
PUT /kuangshen/user/3
{
  "name":"李四",
  "age":23,
  "desc":"不知道怎么形容",
  "tags":["靓女","跳舞","唱歌"]
}

2、获取数据 GET

GET kuangshen/user/1

3、更新命令 PUT

在这里插入图片描述

4、 POST __update 推荐使用这种方式

POST kuangshen/user/1/_update
{
  "doc":{
    "name":"狂神说java"
  }
}
//如果没有_update 那么就只有一个name信息 ,如果有,那么就只修改那么信息

5、简单搜索

GET kuangshen/user/1

//简单的条件查询
GET kuangshen/user/_search?q=name:狂神说 

复杂操作 搜索

花样查询详解

在这里插入图片描述

查询

在这里插入图片描述


在这里插入图片描述

只想查看name 和 desc

GET kuangshen/user/_search
{
  "query":{
    "match": {
      "name": "狂神"
    }
  },
  "_source":["name","desc"]
}

排序 通过年龄排序

GET kuangshen/user/_search
{
  "query":{
    "match": {
      "name": "狂神"
    }
  },
  "sort":[
    {
    "age":{
      "order":"asc"
    }
  }
  ]
}

分页

GET kuangshen/user/_search
{
  "query":{
    "match": {
      "name": "狂神"
    }
  },
  "sort":[
    {
    "age":{
      "order":"asc"
    }
  }
  ],
  "from":0,
  "size":1
}
//from 从什么开始  size 展示多少个数据

布尔值查询 多条件查询

must (and) 所有条件都要符合

GET kuangshen/user/_search
{
  "query":{
    "bool" :{
      "must": [
        {
          "match": {
            "name": "狂神说"
          }
        },
        {
          "match": {
            "age": 23
          }
        }
      ]
    }
  }
}

should (or) 满足一个就行

GET kuangshen/user/_search
{
  "query":{
    "bool" :{
      "should": [
        {
          "match": {
            "name": "狂神说"
          }
        },
        {
          "match": {
            "age": 23
          }
        }
      ]
    }
  }
}

must_not (not) 查询不是23岁的人

GET kuangshen/user/_search
{
  "query":{
    "bool" :{
      "must_not": [
        {
          "match": {
            "age": 23
          }
        }
      ]
    }
  }
}

filter过滤 (查询是狂神,但年龄大于1小于30的)

  • gt 大于
  • lt 小于
  • gte 大于等于
  • lte 小于等于
GET kuangshen/user/_search
{
  "query":{
    "bool" :{
      "must": [
        {
          "match": {
            "name": "狂神"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "age": {
              "gt": 1, 
              "lt": 30
            }
          }
        }
      ]
    }
  }
}

匹配多个条件! 多个条件空格 隔开

//只要满足其中一个结果就可以被查出 这个时候可以通过分值基本判断
GET kuangshen/user/_search
{
  "query":{
   "match": {
     "tags": "男 技术"
   }
  }
}

精确查询 !

term查询是直接通过倒排索引指定的词条进程精确的查找的!|

关于分词
  • term,直接查询精确的
  • match,会使用分词器解析!(先分析文档,然后在通过分析的文档进行查询!)
关于类型 text keyword

测试

PUT testdb
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "desc":{
        "type": "keyword"
      }
    }
  }
}
PUT testdb/_doc/1
{
  "name":"狂神说java name",
  "desc":"狂神说java desc"
}
PUT testdb/_doc/2
{
  "name":"狂神说java name",
  "desc":"狂神说java desc2"
}
GET _analyze
{
  "analyzer" :"keyword",
  "text":"狂神说java name"
}
// 不会拆分 是一个整体
GET _analyze
{
  "analyzer" :"standard",
  "text":"狂神说java name"
}
//被拆分了
GET testdb/_search
{
  "query": {
    "term": {
        "name": "狂"
    }
  }
}
// 发现都2条可以查出来
GET testdb/_search
{
  "query": {
    "term": {
        "desc":"狂神说java desc"
    }
  }
}
//发现只有一条 因为keyword不会被分词器解析

精确查询多个值

PUT testdb/_doc/3
{
  "t1":"22",
  "t2":"2020-4-6"
}
PUT testdb/_doc/4
{
  "t1":"33",
  "t2":"2020-4-7"
}
GET testdb/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
              "t1": "22"
          }
        },
        {
           "term": {
              "t1": "33"
          }
        }
      ]
    }
  }
}

高亮查询 !

默认是 < em>

//自定义搜索高亮条件
GET kuangshen/user/_search
{
  "query":{
    "match": {
      "name": "狂神"
    }
  },
  "highlight":{
    "pre_tags": "<p class='key' style='color:red;'>", 
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值