IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> elasticsearch系统学习笔记3-数据基本操作 -> 正文阅读

[大数据]elasticsearch系统学习笔记3-数据基本操作

插入数据

语法:

PUT /{index}/{type}/{id}
{
  "field": "value",
  ...
}

例子:

PUT /order/_doc/1
{
  "id": 1,
  "shop_id": 1,
  "user_id": 11,
  "create_at": "2019-12-12 12:20:22"
}

修改数据

更新整个文档语法跟前面介绍的插入文档的语法一模一样,只要ID相同就会直接覆盖之前的文档

虽然说elasticsearch支持通过Api更新文档,但是ES底层文档是不可变的,每次修改文档,本质上是创建一个新的文档,然后把老的文档标记成删除。

查询一个文档

语法:
GET /{index}/{type}/{id}

例子:
GET /order/_doc/1

删除文档

语法:
DELETE /{index}/{type}/{id}

例子:
DELETE /order/_doc/1

Query DSL

  1. 查询基本语法结构
GET /{索引名}/_search
{
	"from" : 0,  // 返回搜索结果的开始位置
    "size" : 10, // 分页大小,一次返回多少数据
    "_source" :[ "field1","field2" ], // 需要返回的字段数组
	"query" : {  }, // query子句
	"aggs" : {  }, // 聚合子句 主要用来编写统计分析语句
	"sort" : {  } // 排序子句 设置排序条件
}

{索引名},支持支持一次搜索多个索引,多个索引使用逗号分隔,例子: GET /order1,order2/_search

按前缀匹配索引名: GET /order*/_search 搜索索引名以order开头的索引

查询语句,返回的JSON数据格式如下

{
    "took": 5, // 查询消耗时间,单位毫秒 
    "timed_out": false, // 查询是否超时
    "_shards": { // 本次查询参与的ES分片信息,查询中参与分片的总数,以及这些分片成功了多少个失败了多少个
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": { // hits字段包含我们搜索匹配的结果
        "total": 1, // 匹配到的文档总数
        "max_score": 1.0, // 匹配到的最大分值
        "hits": [
            // 这里就是我们具体的搜索结果,是一个JSON文档数组
        ]
    }
}

分页

  • from 开始位置
  • size 当前页大小
GET /order/_search
{
  "from": 20,
  "size": 10
}

_source

结果数据只返回 _source 标注的字段值

GET /order/_search
{
  "_source": [
    "shop_id",
    "user_id"
  ]
}

sort

语法:

GET /{索引名}/_search
{
  "query": {
    // ...查询条件....
  },
  "sort": [
    {
      "{Field1}": { // 排序字段1
        "order": "desc" // 排序方向,asc或者desc, 升序和降序
      }
    },
    {
      "{Field2}": { // 排序字段2
        "order": "desc" // 排序方向,asc或者desc, 升序和降序
      }
    }
    // ....多个排序字段.....
  ]
}

例子:

GET /order/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "user_id": {
        "order": "desc"
      }
    },
    {
      "shop_id": {
        "order": "asc"
      }
    }
  ]
}

query

  1. 匹配单个字段
GET /{索引名}/_search
{
    "query": {
        "match": {
            "{FIELD}": "{TEXT}"
        }
    }
}

如果 {FIELD} 字段的数据类型是 text 类型,搜索关键词会进行分词处理

  1. 精确匹配单个字段

精确匹配是指等值匹配,不需要进行分词处理,例如:订单号、手机号、时间字段

GET /{索引名}/_search
{
    "query": {
        "term": {
            "{FIELD}": "{VALUE}"
        }
    }
}

类似: select * from order_v2 where order_no = “202003131209120999”

  1. 包含
GET /{索引名}/_search
{
    "query": {
        "terms": [
            "{VALUE1}",
            "{VALUE2}"
      ]
    }
}

类似: select * from order_v2 where shop_id in (123,100,300)

  1. 范围匹配
GET /{索引名}/_search
{
  "query": {
    "range": {
      "{FIELD}": {
        "gte": 10, 
        "lte": 20
      }
    }
  }
}

范围参数如下:

  • gt - 大于 ( > )
  • gte - 大于且等于 ( >= )
  • lt - 小于 ( < )
  • lte - 小于且等于 ( <= )

类似: select * from order_v2 where shop_id >= 10 and shop_id <= 20

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 23:09:14  更:2022-01-29 23:09:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:18:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码