kibana操作elasticsearch(增删改查)

小明 2025-04-28 17:23:08 4

天行健,君���以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 1. 环境安装
  • 2. es与mysql对比在这里插入图片描述
  • 3. kibana界面
  • 4. 创建索引
  • 5. 删除索引
  • 6. 查看ES相关信息
    • 6.1 查看es健康状态
    • 6.2 查看es的节点
      • 6.2.1 查看es的所有节点
      • 6.2.2 查看es的主节点
      • 6.3 查看es的索引
        • 6.3.1 查看es的所有索引
        • 6.3.2 查看es的所有索引并指定响应返回的数据格式
        • 6.3.3 查看es的索引设置
        • 7. 新增文档数据
          • 7.1 自定义文档id可用PUT
          • 7.2 系统默认文档id可用POST
          • 8. 查询文档数据
            • 8.1 查询全部文档数据
            • 8.2 查询单个记录
            • 8.3 查询文档的字段数据
            • 8.3 条件查询文档数据
              • 8.3.1 根据指定字段的值查询对应数据
              • 8.3.2 根据指定字段的值(多个值)查询对应数据
              • 8.3.3 根据指定字段的值(多个值)查询对应数据(短句匹配)
              • 8.3.4 根据指定字段的值(多个值)查询对应数据(精确匹配)
              • 8.3.5 多字段匹配条件查询
              • 8.3.6 符合条件查询
              • 8.3.7 过滤条件查询
              • 8.4 条件查询文档数据(分页、排序、展示)
              • 9. 修改/更新文档数据
                • 9.1 PUT修改
                • 9.2 POST更新
                • 10. 删除文档数据
                  • 10.1 删除单个文档数据
                  • 10.2 删除某索引下的所有文档
                  • 11. 批量操作bulk
                    • 11.1 批量删除
                    • 11.2 批量新增(需要有请求体)
                    • 11.3 批量索引(需要有请求体)
                    • 11.4 批量更新

                      1. 环境安装

                      先安装elasticsearch和kibana

                      可参考:

                      elasticsearch下载、安装、配置

                      kibana下载、安装、配置

                      2. es与mysql对比在这里插入图片描述

                      索引index即数据库table

                      类型type即表数据类型

                      文档document即数据记录row就是一条记录

                      字段field即数据字段信息column

                      3. kibana界面

                      安装好kibana和es之后,先启动es再启动kibana

                      然后访问kibana界面,找到management中的dev tools进行es的增删改查操作

                      在界面的Console控制台输入并执行命令,每行命令后会有一个绿色三角形,点击即可运行命令

                      4. 创建索引

                      语法格式:

                      PUT 索引名 

                      如创建索引名为deviceinfo的索引

                      PUT deviceinfo 

                      注:不能有特殊字符,不能有大写字母,支持纯小写

                      也可以创建索引时设置索引,不设置则使用系统默认设置

                      PUT deviceinfo/ { "settings":{ "index":{ "number_of_shards":2, "number_of_replicas":1 } } } 

                      number_of_shards 分片数量,建立后不可修改

                      number_if_replicas 备份数量

                      5. 删除索引

                      语法格式:

                      DELETE 索引名 

                      如删除索引名为deviceinfo的索引

                      DELETE deviceinfo 

                      6. 查看ES相关信息

                      6.1 查看es健康状态

                      GET _cat/health 

                      或加上v参数输出详细信息

                      GET _cat/health?v 

                      6.2 查看es的节点

                      6.2.1 查看es的所有节点

                      GET _cat/nodes 

                      或加上v参数输出详细信息

                      GET _cat/nodes?v 

                      6.2.2 查看es的主节点

                      GET _cat/master 

                      6.3 查看es的索引

                      6.3.1 查看es的所有索引

                      GET _cat/indices 

                      或加上v参数输出详细信息

                      GET _cat/indices?v 

                      6.3.2 查看es的所有索引并指定响应返回的数据格式

                      GET _cat/indices?format=json 

                      6.3.3 查看es的索引设置

                      语法格式:

                      GET 索引名/_settings 

                      如查看索引名为deviceinfo的索引设置

                      GET deviceinfo/_settings 

                      7. 新增文档数据

                      新增文档可用PUT或POST

                      7.1 自定义文档id可用PUT

                      新增数据时带有文档id参数(自己定义命名的)的情况,用PUT

                      语法格式:

                      PUT 索引名/类型名/文档id { 字段名1:字段值1, 字段名2:字段值2, 字段名3:字段值3 } 

                      如新增索引deviceinfo下类型为netinfo文档id为1的文档数据

                      PUT deviceinfo/netinfo/1 { "net_name":"http001", "net_type":"3g", "net_size":"0.15M" } 

                      执行后结果如下

                      7.2 系统默认文档id可用POST

                      当新增的参数中不加文档id参数时,则用POST,新增后系统自动生成默认的文档id(一个字符串)

                      语法格式:

                      POST 索引名/类型名/ { 字段名1:字段值1, 字段名2:字段值2, 字段名3:字段值3 } 

                      如新增索引deviceinfo下类型为netinfo文档id为1的文档数据

                      POST deviceinfo/netinfo/ { "net_name":"http002", "net_type":"3g", "net_size":"0.17M" } 

                      注:如果使用默认的文档id,前提是这个类型必须是已经存在的,如果是新增的类型不带文档id执行命令会失败

                      新增后结果如下

                      8. 查询文档数据

                      到指定的索引、类型查看文档数据

                      8.1 查询全部文档数据

                      语法格式:

                      GET 索引名/类型名/_search 

                      或者

                      GET 索引名/类型名/_search { "query":{ "match_all":{} } } 

                      如查询索引名为deviceinfo类型为netinfo的文档数据

                      GET deviceinfo/netinfo/_search 

                      或者

                      GET deviceinfo/netinfo/_search { "query":{ "match_all":{} } } 

                      执行命令可以查看到之前插入的两条文档数据,结果如下

                      8.2 查询单个记录

                      语法格式:

                      GET 索引名/类型名/文档id 

                      如查询索引名为deviceinfo类型名为netinfo中文档id为1的数据

                      GET deviceinfo/netinfo/1 

                      结果如下

                      8.3 查询文档的字段数据

                      语法格式:

                      GET 索引名/类型名/文档id?_source=字段名1,字段名2 

                      如查询索引名为deviceinfo类型名位netinfo文档id为1字段名为net_name和net_type的数据

                      GET deviceinfo/netinfo/1?_source=net_name,net_type 

                      查询结果如下

                      8.3 条件查询文档数据

                      8.3.1 根据指定字段的值查询对应数据

                      GET /索引名/_search { "query":{ "match":{ "字段名":"字段值" } } } 

                      8.3.2 根据指定字段的值(多个值)查询对应数据

                      查询字段名的值为值1和值2的数据

                      GET /索引名/_search { "query":{ "match":{ "字段名":"字段值1 字段值2" } } } 

                      8.3.3 根据指定字段的值(多个值)查询对应数据(短句匹配)

                      查询字段名的值为值1和值2的数据

                      match_phrase短句匹配,不会对查询条件进行分词检索

                      GET /索引名/_search { "query":{ "match_phrase":{ "字段名":"字段值1 字段值2" } } } 

                      8.3.4 根据指定字段的值(多个值)查询对应数据(精确匹配)

                      查询字段名的值为值1和值2的数据

                      match_phrase短句匹配

                      字段名后加.keyword表示精确匹配,匹配的条件就是要显示字段的全部值,要进行精确匹配的

                      GET /索引名/_search { "query":{ "match_phrase":{ "字段名.keyword":"字段值1 字段值2" } } } 

                      8.3.5 多字段匹配条件查询

                      查询字段名的值为值1和值2的数据

                      multi_match表示多字段匹配查询方式

                      query是多个字段的对应的同一个值

                      fields表示多个字段的集合

                      如下为查询字段名1和字段名2的值都为字段值的数据

                      GET /索引名/_search { "query":{ "multi_match":{ "query":"字段值" "fields":["字段名1","字段名2"] } } } 

                      8.3.6 符合条件查询

                      bool表示符合查询

                      must表示必须达到must列举的所有条件

                      must_not表示必须不匹配must_not列举的所有条件

                      should表示应该满足should所列举的条件,类似or

                      达到should列举的条件,如果达到会增加相关文档的评分,不会改变查询的结果

                      如果query中只有should且只有一种匹配规则,则should的条件就会被作为默认匹配条件而去改变查询结果

                      GET /索引名/_search { "query":{ "bool":{ "should":[ { "match":{ "字段名1":"字段值1" } }, { "match":{ "字段名2":"字段值2" } } ], "must":[ { "match":{ "字段名3":"字段值3" } } ] } } } 

                      8.3.7 过滤条件查询

                      filter结果过滤,不计算得分,不是所有的查询都会产生分数,仅用于filter的文档查询更不会产生分数

                      GET /索引名/_search { "query":{ "bool":{ "must":[ { "match":{ "字段名1":"字段值1" } } ], "filter":{ "range":{ "过滤字段名":{ "gte":"10", "lte":"100" } } } } } } 

                      更多查询技巧请参考:kibana操作es

                      8.4 条件查询文档数据(分页、排序、展示)

                      可添加如下参数进行条件查询、分页查询、排序、指定字段查询

                      GET 索引名/_search { "query":{ "match_all":{} }, "from":0, "size":5, "sort":{ "排序字段名":{ "order":"desc" } }, "_source":["字段名1","字段名2"] } 

                      注:

                      match_all 查询类型,查询所有

                      from 分页查询从0开始

                      size 分页查询每页5个

                      sort 排序,可指定字段进行排序

                      _source 指定查询结果展示的字段,支持多个

                      9. 修改/更新文档数据

                      可用PUT方式或者POST方式

                      9.1 PUT修改

                      PUT属于修改,必须包含文档id

                      语法格式:

                      PUT 索引名/类型名/文档id { "字段名1":"新的字段值1", "字段名2":"新的字段值2", "字段名3":"新的字段值3" } 

                      如修改索引名为deviceinfo类型名为netinfo文档id为1的文档数据

                      PUT deviceinfo/netinfo/1 { "net_name":"http003", "net_type":"4g", "net_size":"0.28M" } 

                      查询修改后的内容

                      GET deviceinfo/netinfo/1 

                      内容已更新

                      9.2 POST更新

                      使用post进行更新数据

                      POST属于新增,

                      当不带_update时,没有文档id则会新增文档id,属于新增数据,有id时则执行修改操作

                      当带_update时,会比较doc中的字段值是否一致,一致则不修改,不一致则修改

                      当不带_update时,重复执行更新操作,数据更新反馈是成功

                      语法格式:

                      POST 索引名/类型名/文档id/_update { "doc":{ "字段名":"新的字段值" } } 

                      如修改索引名为deviceinfo类型名为netinfo文档id为1字段名为net_name的值

                      POST deviceinfo/netinfo/1/_update { "doc":{ "net_name":"http004" } } 

                      修改后查询结果如下

                      GET deviceinfo/netinfo/1 

                      10. 删除文档数据

                      10.1 删除单个文档数据

                      语法格式:

                      DELETE 索引名/类型名/文档id 

                      如删除索引名为deviceinfo类型名为netinfo文档id为1的数据

                      DELETE deviceinfo/netinfo/1 

                      10.2 删除某索引下的所有文档

                      POST deviceinfo/_delete_by_query { "query":{ "match_all":{} } } 

                      11. 批量操作bulk

                      11.1 批量删除

                      语法格式:

                      POST /索引名/类型名/_bulk {"delete":{"_index":"索引名","_type":"类型名","_id":"文档id"}} 

                      POST /deviceinfo/netinfo/_bulk {"delete":{"_index":"deviceinfo","_type":"netinfo","_id":"1"}} 

                      11.2 批量新增(需要有请求体)

                      语法格式:

                      POST /索引名/类型名/_bulk {"create":{"_index":"索引名","_type":"类型名","_id":"文档id1"}} {"字段名":"字段值"} {"create":{"_index":"索引名","_type":"类型名","_id":"文档id2"}} {"字段名":"字段值"} 

                      或者

                      POST /索引名/类型名/_bulk {"index":{}} {"字段名1":"字段值1","字段名2":"字段值2"} {"index":{}} {"字段名3":"字段值3","字段名4":"字段值4"} 

                      POST /deviceinfo/netinfo/_bulk {"create":{"_index":"deviceinfo","_type":"netinfo","_id":"1"}} {"net_name":"http1001"} 

                      11.3 批量索引(需要有请求体)

                      语法格式:

                      POST /索引名/类型名/_bulk {"index":{"_index":"索引名","_type":"类型名"}} {"字段名":"字段值"} 

                      注:没有指定id系统会自动生成

                      POST /deviceinfo/netinfo/_bulk {"index":{"_index":"deviceinfo","_type":"netinfo"} {"net_name":"http1002"} 

                      11.4 批量更新

                      语法格式:

                      POST /索引名/类型名/_bulk {"update":{"_index":"索引名","_type":"类型名","_id":"文档id"}} {"doc":{"字段名":"字段值"}} 

                      POST /deviceinfo/netinfo/_bulk {"update":{"_index":"deviceinfo","_type":"netinfo","_id":"1"}} {"doc":{"net_name":"http1003"}} 

                      注:更新时不能缺失_id,文档不存在更新会失败


                      感谢阅读,祝君暴富!

The End
微信