es常用操作

启动

/bin/elasticsearch -d

停止

ps -ef|grep elasticsearch  根据进程id删除     kill  -9 id

elasticsearchdump 使用

Linux导出

elasticdump --input=http://192.168.1.1:9200/indexname/ --output=test.json  --searchBody  '{"query":{"bool":{"filter":[{"range":{"time":{"gte":1548950400000,"lt": 1551369600000}}},{"match_phrase":{"content":"搜索匹配数据"}}]}}}' &

windows导出   --双引号需要转义

 elasticdump --input=http://192.168.1.1:9200/indexname/ --output=E:\test.json  --searchBody  {\"query\":{\"bool\":{\"filter\":[{\"range\":{\"time\":{\"gte\":1548950400000,\"lt\":1551369600000}}},{\"match_phrase\":{\"content\":\"搜索匹配数据\"}}]}}} &

导入(linux与windows相同)

elasticdump --output=http://192.168.1.1:9200/indexname/ --input=E:\test.json --type=data    
 ----后面这个有的版本加了报错  --headers='{"content-type": "application/json"}'

head启动

head目录: setsid /node_modules/grunt/bin/grunt server &      

head配置文件

_site/app.js 配置es集群, Gruntfile.js配置head端口

head创建模板

PUT http://192.168.1.1:9200/_template/template_name
 {
 "template":indexName,
 mapping
 }
 ,在mapping最上边新增一行"template":indexName  即可   

head删除模板

delete  http://192.168.1.1:9200/_template/template_name   
删除指定名称的模板    template_name为*即可删除所有模板

根据mapping创建索引

put  http://192.168.1.1:9200/indexname  {{mapping}}

删除索引

curl -XDELETE 'http://host.IP.address:9200/logstash-*'  
或者通过head删除
http://192.168.1.1:9200/indexName  DELETE

查询所有数据总数

通过head:  http://192.168.1.11:9200/_cat/count?v   或者
curl -s -XGET http://192.168.1.1:9200/_cat/count?v

定时删除数据脚本

#!/bin/bash 
dat="\""`date --date='15 days ago' "+%Y-%m-%d %H:%M:%S"`":000\""

dat1="\"2010-10-10 19:45:04:050\""

curl -XPOST http://192.168.1.1:9200/indexname/typename/_delete_by_query -d "{\"query\":{\"bool\":{\"must\":[{\"range\":{\"C_T\":{\"lt\":$dat}}}]}}}"  -H "Content-Type: application/json"

批量删除(delete_by_query)

POST /indexname/typename/_delete_by_query  {"query": {"range": {"time": {"gte": "2016-01-01 00:00:00:000","lte": "2016-01-02 00:05:05:670"}}}}
  
POST /indexname/typename/_delete_by_query {"query": {"term": {"age": "48"}}}

POST /indexname/typename/_delete_by_query {"query": {"bool": {"must": [{"match_all": { }}]}}}

POST /indexname/typename/_delete_by_query
{
    "query": {
        "term": {
           "ip": {
              "value": "192.168.1.1"
           }
        }
    }
}

批量删除(delete)

DELETE /indexname/typename/_query  {"query": {"range": {"time":  {"gte": "2019-01-01 00:00:00:000","lte": "2019-01-02 23:59:59:000"}}}}

单条删除

DELETE /indexname/typename/id

批量插入

POST /indexname/typename/_bulk
{ "index": {}}
{"name" : "123",
 "age":11,
 "sex":"妞"
}
{ "index": {}}
{"name" : "1234",
"age":113,
"sex":"妞"
}
{ "index": {}}
{"name" : "12345",
"age":112,
"sex":"妞"
}
{ "index": {}}
{"name" : "123345",
"age":111,
"sex":"妞"
}

单条插入日志

POST /indexname/typename
{"age": 123,
"name":"asd"
}

单机多节点部署

1).将原来es复制一份

2).修改node.name、 http.port、path.data、 path.logs

3).node.max_local_storage_nodes:2 (每台机器运行的节点数)

根据查询批量修改 

将所有age为123的name改为张三

{"script":{"inline":"ctx._source.name='张三'","lang":"painless"},"query":{"match":{"age":123}}}

根据查询新增字段

将所有存在name字段的数据,新增一个字段desc。他的值为age字段的值

{"script":{"inline":"ctx._source.desc=ctx._source.age","lang":"painless"},"query":{"bool":{"must":[{"exists":{"field":"name"}}]}}}

查询未分配分片信息

curl -XGET 192.1668.1.1:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED

强制分配分片(可能会导致数据丢失)

 将es02节点上indexname的7分片强制分配,允许数据丢失

curl -XPOST '192.168.1.1:9200/_cluster/reroute?retry_failed=5&pretty' -d '{"commands":[{"allocate_stale_primary": {"index": "indexname","shard": 7,"node": "es02", "accept_data_loss" : true}}]}' 

获取分片不分配原因

http://192.168.1.1:9200/_cluster/allocation/explain

批量插入文件

curl -X POST "192.168.1.1:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test1.txt

修改副本个数

PUT indexname/_settings  {"number_of_replicas": 2}

聚合排序--javaapi

   根据name字段进行排序,对age字段进行求和,根据求和结果进行倒序排列

.addAggregation(AggregationBuilders.terms("attackIp").field("name")
                        .order(Terms.Order.aggregation("aac", "value", false))                 .subAggregation(AggregationBuilders.sum("aac").field("age"))
                ).setFrom(0).setSize(10).get();   

聚合返回结果类型--javaapi

terms : StringTerms 
min:	IntervalMin
max:	IntervalMax
count: 	IntervalCount

elasticdump 安装

先安装node.js 官网: https://nodejs.org/en/download/ 选择版本 下载 安装 执行命令:

nmp

install nmp

install elasticdump -g

聚合查询

  根据name聚合,查询age字段的和

GET /indexname/typename/_search
{
  "size": 0,             
  "aggs": {
    " attackIp": {   
      "terms": {
        "field": "name",
        "order": {
          "attackCount": "desc"
        },
        "size": 5
      },
      "aggs": {
        "attackCount": {
          "sum": {
            "field": "age"
          }
        }
      }
    }
  }
}

插入数据

POST /indexname/typename
{
"time": "2017-10-20 04:16:29:000",
"age": 47474,
"ip": "192.1668.1.1"
}
​​​​​​​以上内容仅供参考!

本文作者为竹子君,转发请注明出处!~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值