• 命令行操作es(转)


     

    ==========

    1.检查ES节点是否正常启动

    curl http://192.168.6.16:9200

    正常状态:

    非正常状态:

      1>确保服务是不是正常启动了,端口用的是哪个

      2>防火墙是否关闭或者端口是否开放

      3>你的curl命令是否有问题,curl命令可能导致服务无法访问,可以尝试重启服务后,在外部浏览器访问URL地址即可。不一定非得用curl

    2.cat检测集群健康状况

    curl http://192.168.6.16:9200/_cat/health?v

    绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示不可用

    3.查询es中所有索引,所有已存在的索引

    curl http://192.168.6.16:9200/_cat/indices?v

    4.创建新的索引【索引要求是全小写字符,可以有下划线隔开】

    curl -XPUT http://192.168.6.16:9200/my_new_index?pretty

     再查看:

    curl http://192.168.6.16:9200/_cat/indices?v

    5.对新增的索引,插入一条数据

    type是user, id指定为1

    curl -XPUT http://192.168.6.16:9200/my_new_index/user/1?pretty -d  '{"name":"张三","age":"23"}'

    6.根据ID,获取刚刚索引中新增的数据

    curl -XGET http://192.168.6.16:9200/my_new_index/user/1?pretty

    7.修改数据

    7.1先新增一条数据

    curl -XPUT http://192.168.6.16:9200/my_new_index/user/2?pretty -d '{"name":"李四","age":"25"}'

    7.2 根据ID查询这条数据

    curl -XGET http://192.168.6.16:9200/my_new_index/user/2?pretty

    7.3修改id为2的数据

    curl -XPUT http://192.168.6.16:9200/my_new_index/user/2?pretty -d '{"name":"李四修改","age":"28"}'

    即使用相同的新增命令操作  相同的ID,数据不同

    7.4查询修改结果

    curl -XGET http://192.168.6.16:9200/my_new_index/user/2?pretty

    8.更新数据,使用POST请求,注意请求体,格式

    curl -XPOST http://192.168.6.16:9200/my_new_index/user/2/_update?pretty -d '{"doc":{"name":"李四更新","age":"230"}}'

    查看更新后的数据:

    curl -XGET http://192.168.6.16:9200/my_new_index/user/2?pretty

    9.更新数据的同时,新增列

    就是将doc中的json数据列增加即可

    curl -XPOST http://192.168.6.16:9200/my_new_index/user/2/_update?pretty -d '{"doc":{"name":"李四更新","age":"230","address":"北京东直门"}}'

     查看:

    curl -XGET http://192.168.6.16:9200/my_new_index/user/2?pretty

    10.将age字段字符串类型,修改为数字类型,并使用简单脚本对其操作

    10.1 查看数据

    curl -XGET http://192.168.6.16:9200/my_new_index/user/2?pretty

    10.2 将age类型由字符串更改为数值

    就是将json中的age的值的引号去掉

    curl -XPOST http://192.168.6.16:9200/my_new_index/user/2/_update?pretty -d '{"doc":{"name":"李四更新","age":230,"address":"北京东直门"}}'

    10.3 查看修改后数据

    curl -XGET http://192.168.6.16:9200/my_new_index/user/2?pretty

    10.4使用简单脚本,对年龄增加5

    如果报错。解决方法:https://www.cnblogs.com/sxdcgaq8080/p/11119420.html

    curl -XPOST http://192.168.6.16:9200/my_new_index/user/2/_update?pretty -d '{"script" : "ctx._source.age += 5"}'

    查看:

    curl -XGET http://192.168.6.16:9200/my_new_index/user/2?pretty

    11.删除数据,根据ID删除

    curl -XDELETE http://192.168.6.16:9200/my_new_index/user/2?pretty

    13.批量插入 bulk

    【注意JSON字符串格式】

    curl -XPOST http://192.168.6.16:9200/my_new_index/user/_bulk?pretty -d '
    {"index":{"_id":"3"}}
    {"name":"赵思","age":12}
    {"index":{"_id":"4"}}
    {"name":"钱三一","age":13}
    '

    想要看插入以后索引下的数据,查询在后面16

    14.批处理语句,bulk,更新id为1的数据,删除id为3的数据 

    curl -XPOST http://192.168.6.16:9200/my_new_index/user/_bulk?pretty -d '
    {"update":{"_id":"1"}}
    {"doc": {"name":"张三变李四","age":25}}
    {"delete":{"_id":"3"}}
    '

    15.导入批量数据集文件json文件【使用bulk批量导入】

    测试的json批量数据集文件,java生成代码:

    public static void main(String[] args) {
            File file   = new File("E:\1\myjson.json");
            FileWriter writer = null;
            int size = 200;
    
            try {
                writer =new FileWriter("E:\1\myjson.json");
                for (int i = 10; i < size+10; i++) {
                    writer.write("{"index":{"_id":""+i+""}}"+"
    "+"{"name":"张三"+i+"","age": "+i+","address":"北京"+i+""}"+"
    ");
                }
                writer.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
    
        }
    View Code

    如果报错,解决方案:https://www.cnblogs.com/sxdcgaq8080/p/11119883.html

    指定要导入的  索引、type、使用bulk命令  @符号后面跟json文件的绝对路径

    curl -XPOST http://192.168.6.16:9200/my_new_index/user/_bulk?pretty --data-binary @/cjf/es/elasticsearch-2.3.3/data/myjson.json

    查看index详情:

    curl http://192.168.6.16:9200/_cat/indices?v

    可以看到成功批量插入了200条

    ===================================下来看查询(删除索引在最后)========================================= 

    16.查询某个索引中的所有数据

    curl http://192.168.6.16:9200/my_new_index/_search?q=*&pretty

    等价于

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match_all":{
    
            }
        }
    }
    '
    复制代码

    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '{"query":{ "match_all":{}}}'

    17.查询指定索引下的数据

    【如果不指定size,默认返回10条】

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match_all":{
    
            }
        },
        "size":10
    }
    '
    复制代码

    18.分页查询,从第10条,返回10条

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match_all":{
    
            }
        },
        "from": 10,
        "size": 10
    }
    '
    复制代码

    19.按照age字段倒序排序 sort,取出20条

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match_all":{
    
            }
        },
        "sort":{
            "age":{
                "order":"desc"
            }
        },
        "from": 0,
        "size": 20
    }
    '
    复制代码

    20.只返回想查询的部分字段

    只返回name和address列

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match_all":{
    
            }
        },
        "_source":[
            "name",
            "address"
        ]
    }
    '
    复制代码

    21.条件匹配查询 

     21.1查询age=200的数据

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match":{
                "age":200
            }
        }
    }
    '
    复制代码

    21.2 查询address中包含 “北京” 的数据

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match":{
                "address":"北京"
            }
        }
    }
    '
    复制代码

    21.3 查询 address中 包含“北京” 或 “西安”的所有数据 【匹配单个词语  空格分隔】

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match":{
                "address":"北京 西安"
            }
        }
    }
    '
    复制代码

    21.4 查询address中包含“北京 西安” 完整词语的【短语匹配,“北京 西安”作为一个完整词语查询】、

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "match_phrase":{
                "address":"北京 西安"
            }
        }
    }
    '
    复制代码

    22.布尔查询 bool

    22.1布尔查询bool   and查询,必须同时满足 address中包含“北京”,又要满足address中包含“西安”

    must表示所有查询必须都为真才被认为匹配

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "bool":{
                "must":[
                    {
                        "match":{
                            "address":"北京"
                        }
                    },
                    {
                        "match":{
                            "address":"西安"
                        }
                    }
                ]
            }
        }
    }
    '
    复制代码

    22.2 布尔查询bool  or查询 address中包含“北京” 或者 address中包含“西安” 都可以

    should 表示查询列表中只要有任何一个为真则认为匹配

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "bool":{
                "should":[
                    {
                        "match":{
                            "address":"北京"
                        }
                    },
                    {
                        "match":{
                            "address":"西安"
                        }
                    }
                ]
            }
        }
    }
    '
    复制代码

    22.3  布尔查询bool   都不能满足的   既不能包含这个,也不能包含那个

    must_not表示查询列表中没有为真的(也就是全为假)时则认为匹配

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "bool":{
                "must_not":[
                    {
                        "match":{
                            "address":"北京"
                        }
                    },
                    {
                        "match":{
                            "address":"西安"
                        }
                    }
                ]
            }
        }
    }
    '
    复制代码

    22.4 这样,就可以布尔查询  多条件组合  查询

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "bool":{
                "must":[
                    {
                        "match":{
                            "age":200
                        }
                    }
                ],
                "must_not":[
                    {
                        "match":{
                            "address":"西安"
                        }
                    }
                ]
            }
        }
    }
    '
    复制代码

    23. 范围查询 range 查询年龄25-30之间的

    复制代码
    curl -XPOST  http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "query":{
            "range":{
                "age":{
                    "gte":25,
                    "lte":30
                }
            }
        }
    }
    '
    复制代码

     

    24.聚合查询 aggs

    按照name进行聚合分组,然后按照记录数,从大到小排序,默认返回前10条

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "size":0,
        "aggs":{
            "group_by_name":{
                "terms":{
                    "field":"name"
                }
            }
        }
    }
    '
    复制代码

     25. 聚合查询 aggs ,求age的平均值

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "size":0,
        "aggs":{
            "average_age":{
                "avg":{
                    "field":"age"
                }
            }
        }
    }
    '
    复制代码

     按name分组,求age的平均值

    复制代码
    curl -XPOST http://192.168.6.16:9200/my_new_index/_search?pretty -d '
    {
        "size":0,
        "aggs":{
            "group_by_name":{
                "terms":{
                    "field":"name"
                },
                "aggs":{
                    "average_age":{
                        "avg":{
                            "field":"age"
                        }
                    }
                }
            }
        }
    }
    '
    复制代码

    100.删除索引

     100.1 查看所有索引信息

    curl http://192.168.6.16:9200/_cat/indices?v

    100.2  删除指定索引

    curl -XDELETE http://192.168.6.16:9200/my_new_index?pretty

    100.3 再次查看

    curl http://192.168.6.16:9200/_cat/indices?v

  • 相关阅读:
    [MongoDB]
    [solr]
    数据结构-二叉树
    vue-学习笔记-Class 与 Style 绑定
    vue-学习笔记-计算属性和侦听器(computed和watch)
    lodash的debounce函数
    vue-学习笔记-模板语法
    vue-学习笔记-Vue 实例
    vue-介绍章节
    工具网站推荐-jsfiddle,一款在线写代码的网站
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/13932972.html
Copyright © 2020-2023  润新知