【ELK】7. elasticsearch linux上操作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

 

 

 

12.批量插入 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

 

 

13.批处理语句,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"}}
'

 

 

14.导入批量数据集文件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+"\"}}"+"\r\n"+"{\"name\":\"张三"+i+"\",\"age\": "+i+",\"address\":\"北京"+i+"\"}"+"\r\n");
            }
            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条

 

 

 

 

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

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

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":{}}}'

 

 

 

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

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

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

        }
    },
    "size":10
}
'

 

 

 

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

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

        }
    },
    "from": 10,
    "size": 10
}
'

 

 

18.按照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
}
'

 

 

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

只返回name和address列

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

        }
    },
    "_source":[
        "name",
        "address"
    ]
}
'

 

20.条件匹配查询 

 20.1查询age=200的数据

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

 

 

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

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

 

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

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

 

 

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

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

 

 

21.布尔查询 bool

21.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":"西安"
                    }
                }
            ]
        }
    }
}
'

 

 

21.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":"西安"
                    }
                }
            ]
        }
    }
}
'

 

 

 

21.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":"西安"
                    }
                }
            ]
        }
    }
}
'

 

 

 

21.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":"西安"
                    }
                }
            ]
        }
    }
}
'

 

 

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

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

 

 

 

 

 

 

23.聚合查询 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"
            }
        }
    }
}
'

 

 24. 聚合查询 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"
                    }
                }
            }
        }
    }
}
'

 

 

===============带鉴权 查询mapping、修改mapping、以及用新增field字段查询===================

 

举例:

Username:elastic Password:changeme IP:es
-ware-1.inner-rta-os.com Port:9200 Index:XXX_ware__ware_sku_5 新增field:ware_ware__duration_type integer类型

 

 

25.带鉴权 查询指定index的mapping

curl -u "elastic:changeme" -XGET  "http://es-ware-1.inner-rta-os.com:9200/XXX_ware__ware_sku_5/_mapping" -H "Content-Type: application/json" 

 

 

26.带鉴权 指定index的mapping新增field字段

curl -u "elastic:changeme" -XPUT  "http://es-ware-1.inner-rta-os.com:9200/XXX_ware__ware_sku_5/_mapping/union"  -H "Content-Type: application/json"  -d  '{"properties":{"ware_ware__duration_type":{"type":"integer"}}}'

 

 

27.带鉴权 根据你新加的字段进行过滤的脚本

curl -u "elastic:changeme" -XGET  "http://es-ware-1.inner-rta-os.com:9200/XXX_ware__ware_sku_5/_search"  -H "Content-Type: application/json"  -d '{"query":{"match":{"ware_ware__duration_type":1}}}'

 

 

 

=====================复杂条件查询 & 指定返回字段 & 查找并更新 ======================

28.查询条件 venderId=5 and rf_id= 621946 查询

{index}/_search

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "ware_ware__rf_id": "621946"
          }
        },
        {
          "term": {
            "ware_ware__vender_id": 5
          }
        }
      ]
    }
  }
}

 

 

29. 分页查询条件 venderId=5 and duration_type= null,指定返回字段

{index}/_search

{
    "_source": ["ware_ware__duration_type", "ware_ware__rf_id"],
    "from": 0,
    "size": 10000,
    "query": {
        "bool": {
            "must": [{
                    "term": {
                        "ware_ware__vender_id": 5
                    }
                }

            ],
            "must_not": [{
                    "exists": {
                        "field": "ware_ware__duration_type"
                    }
                }
            ]
        }
    }
}

 

 

 

30.按条件查找并更新

 

{index}/_update_by_query


curl -X POST "localhost:9200/your_index/_update_by_query" -H 'Content-Type: application/json' -d
'
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "ware_ware__vender_id": 5
          }
        },
        {
          "term": {
            "ware_sku__rf_id": "523936"
          }
        }
        
      ],
     "must_not": [
         {
                "exists": {
                  "field": "ware_ware__duration_type"
                }
              }     
            ]
    }
  },
  "script": {
    "source": "ctx._source.ware_ware__duration_type = 1",
    "lang": "painless"
  }
}
'


条件
ware_ware__vender_id = 5 && ware_sku__rf_id = 523936 && ware_ware__duration_type为空的
更新
将 ware_ware__duration_type  更新为 1

 

 

 

 

 

31.按条件查找并删除

{index}/_delete_by_query

curl -X POST "localhost:9200/your_index/_delete_by_query" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "name": "John Doe"
    }
  }
}
'

查找ware_sku__vender_id=5  && ware_ware__duration_type 字段不存在的数据,删除它们




{
  "query": {
    "bool": {
      "must": [
        
        {
          "term": {
            "ware_sku__vender_id": 5
          }
        }
        
      ]
      ,
      "must_not": [
         {
                "exists": {
                  "field": "ware_ware__duration_type"
                }
              }     
            ]
    }
  }
}

 

 

 

 

 

 

 

 

 

 

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

 

 

==========================================

 

posted @ 2019-07-02 10:22  Angel挤一挤  阅读(22145)  评论(0)    收藏  举报