Elasticsearch Restful 操作数据

_index  索引(文档存储的地方)
_type  文档存储的类型
_id    文档的唯一标识

curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。简单的认为是可以在命令行下面访问url的一个工具。在centos的默认库里面是有curl工具的,如果没有请yum安装即可。
​
curl
    -X 指定http的请求方法 有HEAD GET POST PUT DELETE
    -d 指定要传输的数据
    -H 指定http请求头信息
​
curl创建索引库(PUT或POST都可以创建):curl -XPUT http://<ip>:9200/index_name/

PUT和POST区别:
PUT是幂等方法,POST不是。所以PUT用于更新,POST用于新增比较合适。
PUT和DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有什么不同,DELETE也是一样。
POST操作不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建了若干的资源。
还有一点需要注意的就是,创建操作可以使用POST,也可以使用PUT,区别就在于POST是作用在一个集合资源(/articles)之上的,而PUT操作是作用在一个具体资源之上的(/articles/123),比如说很多资源使用数据库自增主键作为标识信息,这个时候就需要使用PUT了。而创建的资源的标识信息到底是什么,只能由服务端提供时,这个时候就必须使用POST。

ES创建索引库和索引时的注意点:
​ 1)索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号
​ 2)如果没有明确指定索引数据的ID,那么es会自动生成一个随机的ID,需要使用POST参数
# get es集群相关信息
GET _cat
GET _cat/master
GET _cat/health
GET _cat/indices?v

# 创建索引(以下都会省略curl和ip)
curl -XPUT http://ES-APP1:9200/ss_20191010/

# 插入数据
PUT /ss_20191010/ch/1 -d  '{"id": "1", "title": "hello"}'

# 创建索引及mapping
PUT ss_20191010
{
    "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
    },
    "mappings": {
        "type1": {
            "properties": {
                  "COD_ACCT_NO": {
                    "type": "keyword"
                  },
                  "DAT_TXN": {
                    "type": "keyword",
                    "format": "YYYY-MM-DD HH:mm:ss"
                  },
                  "@timestamp": {
                    "format": "strict_date_optional_time||epoch_millis",
                    "type": "date",
                    "enabled": true
                  }
              }
        }
    }
}

# 索引查询
POST  ss_2019*/_search
POST  ss_2019*/_search?q=title:'elasticsearch'
# 根据Id查询
GET ss_20191007/ch/1202000013104906_EBP201910231100133949404_3~21200~1
# 条件查询
GET ss_*/_search
{
  "query":{ "match":{ "TAG": "存活超2" } }
}
# 部分字段查找
GET ss_*/_search
{
  "query":{"match_all": {}},
  "sort":[{"DAT_TXN":"desc"}],
  "_source": ["DAT_TXN","AMT_TXN","DAT_POST"]
}
# 组合查询 bool    (must + must : 交集, must +must_not :差集,should+should  : 并集)
GET ss_*/_search
{
    "query":{
        "bool":{
            "must" : {"match":{"name":"yuanhua"}},
            "must" : {"match":{"age":30}},
            "must_not" : {"match":{"male":"famale"}},
            "must_not" : {"range":{"score" : { "from" : 20, "to" : 33 }}}

            }
    }
}
# 过滤
GET ss_*/_search
{
    "query":{
        "bool":{
            "must" : [
                {"match":{"name":"yuanhua"}},
                {"match":{"age":30}}
            ],
            "filter": [ 
                { "term":  { "status": "published" }}, 
                { "range": { "publish_date": { "gte": "2015-01-01" }}} 
            ]
       }
    }
}

# 前缀查找
GET ss_*/_search?q=REF_TXN_NO:IBP*&pretty'
GET ss_*/_search
{
  "query":{
    "prefix":{
      "REF_TXN_NO":{
        "value": "IBP"
      }
    }
  }
}
# 局部更新(必须用POST)
post ss_20191007/_update_by_query
{
  "query":{
    "match":{
      "_id":"1202000013104906_EBP201910231100133949404_3~21200~1"
    }
  },
  "script":{
      "inline":"ctx._source.FEE='111111111111'",
      "lang":"painless"
  }
}

# 删除索引
DELETE ss_20191020

# 全量删除数据
POST /acct_card/hc/_delete_by_query?refresh&slices=1&pretty
{
  "query":{
    "match_all":{}
  }
}
# 根据_id删除
DELETE ss_20191017/ch/1202000010933760_BTS20191017102522295777_3458~33~125
# 根据条件删除数据
POST /ss_*/_delete_by_query
{
  "query":{
    "match":{
      "REF_TXN_NO": "EBF2007110152490240"
    }
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值