• elasticsearch 7.x的 常用命令


    序言

    因为我最早是先学 sql,我相信很多人也和我一样
    所以 我觉得用sql 的概念来重说es 概念会比较好
    注意: mysql 的索引与es的索引不是同一个意思

    准备

    先安装好kibana 用kibana 学习 ES 脚本会比较容易

    es在kibana中调试时,指令分两个部分
    第一行是指令
    第二行开始是指令的 json参数 (可省略)

    常用指令

    创建表

    PUT 表名(要小写)

    例子:
    PUT zdy
    或者

    PUT zdy    
    {    "settings": {    "number_of_shards": 1,    "number_of_replicas": 0    }    }
    
    • 1
    • 2

    创建表结构

    PUT /表名/_mapping

    例子:

        PUT /zdy/_mapping
        {
            "properties": {
                "姓名": {
                    "type": "text",
                    "analyzer": "ik_max_word"
                },
                "住址": {
                    "type": "keyword",
                    "index": false
                },
                "性别": {
                    "type": "text",
                    "index": false
                },
                "年龄": {
                    "type": "float"
                }
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    同时创建表和表结构

    PUT /cars
    {
        "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 0
        },
        "mappings": {
            "properties": {
                "color": {
                    "type": "keyword"
                },
                "make": {
                    "type": "keyword"
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    插入数据

    PUT /表名/指定编号 或者 >PUT /表名(自动编号)

      POST zdy/_doc/1  
      { 
        "姓名":"zg",
        "年龄":9,
        "性别":"男",
        "住址":"江苏南通"
       }
    ###注意:字符串 不要用单引号
    ###或者
     POST /zdy/_doc
        {
            "名称":"超米手机",
            "图片":"http://image.leyou.com/12479122.jpg",
            "价格":3699.00,
            "是否卖出":true
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    批量添加数据

    POST 表/_bulk
    ###_bulk 是指令 不能改类似的还有_search ,_update 等
    {action:{metadata}}\n 操作,
    ##action:可以是create(创建),index(保存),update(更新),delete(删除)等
    ##metadata :元数据,可以写数据的"_id"等
    {request body}\n
    ##request body:写数据本身
    {action:{metadata}}\n
    {request body}\n

    例子:

     POST /cars/_bulk
    { "index": {}}
    { "price" : 10000, "color" : "red", "make" : "honda", "sold" : "2014-10-28" }
    { "index": {}}
    { "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }
    { "index": {}}
    { "price" : 30000, "color" : "green", "make" : "ford", "sold" : "2014-05-18" }
    { "index": {}}
    { "price" : 15000, "color" : "blue", "make" : "toyota", "sold" : "2014-07-02" }
    { "index": {}}
    { "price" : 12000, "color" : "green", "make" : "toyota", "sold" : "2014-08-19" }
    { "index": {}}
    { "price" : 20000, "color" : "red", "make" : "honda", "sold" : "2014-11-05" }
    { "index": {}}
    { "price" : 80000, "color" : "red", "make" : "bmw", "sold" : "2014-01-01" }
    { "index": {}}
    { "price" : 25000, "color" : "blue", "make" : "ford", "sold" : "2014-02-12" }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    修改数据

    PUT /索引库/_doc/id值
    POST /索引库/_doc/id值

    PUT 与POST 更新操作区别
    POST 主要是创建 ,而 PUT主要是修改
    当POST 用于修改时 必须在URL带_update后缀,
    更新前会比对新旧数据,如果新旧数据完全相同,将不会进行任何操作,不会影响序列号、版本号信息。 如果URI不带_update,不会检查原数据,都会显示updated
    PUT路径没法带_update,每次都会更新显示updated

    例子:

       PUT /zdy/_doc/1
        {
        "名称":"超大米手机",
        "图片":"http://image.leyou.com/12479122.jpg",
        "价格":3899.00,
        "库存": 100,
        "是否卖出":true
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    删除数据

    ###删除记录
    DELETE /索引名/_doc/id值
    ###删除表
    DELETE /索引名

    简单的条件查询

    1. 查询所有
    
    `GET /索引库名/_search`
    { "query": { "match_all": {} } }
    
    使用match_all 可以查询到所有文档,是没有查询条件下的默认语句。
    
    
    2. 匹配查询
    GET /索引库名/_search
    {
    "query":{
        "match": {
        "category" : "Clothing"
        }
    }
    }
    
    3. 精确分词匹配查询
    GET /索引库名/_search
    {
    "query":{
        "match_phrase": {
        "category":"Women's Clothing"
        }
    }
    }
    ###先分词,按照 Women's 和 Clothing 两个单词进行检索,取并集
    
    4. 相似度匹配 
    GET /索引库名/_search{ 
    "query": { 
    "match": {  
    "title": { 
    "query": "小米手机电视",
    "minimum_should_match": "60%" 
        }   
    } 
    }}
    
    5. 多字段匹配
    GET /索引库名/_search
    {
    "query": {
    "multi_match": {
    "query": "小米",
    "fields":["title","subTitle"]
    }
    }
    
    6.  多值匹配
    GET /索引库名/_search
    {
    "query": {
        "terms": {
            "title": ["小米","手机"]
        }
    }
    }
    
    7. 范围匹配
    GET /索引库名/_search
    {
    "query": {
        "range": {
            "price": {
                "gte": 2799,
                "lte": 3899
            }
        }
    }
    }
    
    8.模糊查询 类似 like
    GET /索引库名/_search
    {
        "query": {
            "fuzzy": {
                "title": {
                    "value": "oope",
                    "fuzziness": 2 
                }
            }
        }
    }
    ##默认允许错误一个字母,最大为两个字母 正确标题 oppo
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86

    排序

    GET /索引库名/_search
    {  
    "sort":[
        {
        "price":{
            "order":"desc"
        }
        }
    ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    分页

    GET /ecommerce/product/_search
    {      
    "from":0, 
    "size":2
    }
    
    ##解析
    "from":0 #从第几个数据开始
    "size":2 #每页多少数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    选择要返回的字段数据

    1. 选择显示字段
     GET /ecommerce/product/_search
     {    
     "_source":["price","min_price","base_price"] 
     }
     #只显示三个字段
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 排除字段 images
     "_source": {
     "excludes": "{images}"
     }
    
    • 1
    • 2
    • 3

    ##使用excludes 排除字段

    复杂条件查询见下一篇

  • 相关阅读:
    【计算机网络】TCP报文详解
    创新案例分享 | 完善社会治理制度,构建开放融合的现代化平台
    蓝牙核心规范(V5.4)10.3-BLE 入门笔记之BIS篇
    施工企业数字化转型如何避免IT技术与企业管理的“两张皮”
    win10离线安装.net3.5失败的解决方案
    技术问题整理01
    非零基础自学Java (老师:韩顺平) 第13章 常用类 13.6 StringBuilder类
    盘点Win前端开发下常用的软件
    [Linux]shell文本处理记录 - 查找、增删特定行及附近行
    图论10-哈密尔顿回路和哈密尔顿路径+状态压缩+记忆化搜索
  • 原文地址:https://blog.csdn.net/zdyah/article/details/126767301