Elasticsearch的基础操作

说明
  • 环境:Linux虚拟机 + Elasticsearch 7.3.0 容器化伪集群 + Kibana 7.3.0 容器化(非必须)
  • 环境准备:待更新
  • 备注:这篇文章简单的介绍了如何与Elasticsearch进行交互,对于初学者来说,能对Elasticsearch的交互有一个简单的认知。以下命令都测试通过,一开始使用的Elasticsearch 6.8.2版本,但是由于执行命令10时,出现错误,故切换至当时最新版7.3.0,而后测试通过。以下命令可以在Linux虚拟机下直接执行,也可以在Kibana的Dev Tools > Console中执行。
1.健康检查
curl -X GET "192.168.2.253:9200/_cat/health?v&pretty"
2.获取集群节点信息
curl -X GET "192.168.2.253:9200/_cat/nodes?v&pretty"
3.获取集群索引信息
curl -X GET "192.168.2.253:9200/_cat/indices?v&pretty"
4.创建索引
curl -X PUT "192.168.2.253:9200/customer?pretty&pretty"
5.在指定索引下创建文件
curl -X PUT "192.168.2.253:9200/customer/_doc/1?pretty&pretty" -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}
'
6.获取指定索引下的指定文件
curl -X GET "192.168.2.253:9200/customer/_doc/1?pretty&pretty"
7.删除一个索引
curl -X DELETE "192.168.2.253:9200/customer?pretty&pretty"
  • 通过以上命令,对于如何处理Elasticsearch的数据,可以用以下模式来概括:
<HTTP Verb> /<Index>/<Endpoint>/<ID>
8.覆盖更新文件内容

更改上面命令6的name, 由 “John Doe” 变成 “Jane Doe”

curl -X PUT "192.168.2.253:9200/customer/_doc/1?pretty&pretty" -H 'Content-Type: application/json' -d'
{
  "name": "Jane Doe"
}
'
9.省略Id创建
  • 说明:在创建索引文件时,部分是可以省略的,当省略id时,ES会为我们随机生成一个ID
curl -X POST "192.168.2.253:9200/customer/_doc?pretty&pretty" -H 'Content-Type: application/json' -d'
{
  "name": "Jane Doe"
}
'

结果类似这样 _id:

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "A2Tkf2wBNvZJIyVDCwq2",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 2,
  "_primary_term" : 1
}
10.指定更新

版本一:更新指定字段

curl -X POST "192.168.2.253:9200/customer/_update/1?pretty&pretty" -H 'Content-Type: application/json' -d'
{
  "doc": { "name": "Jane Doe" }
}
'

版本二:更新指定字段,并新增一个字段

curl -X POST "192.168.2.253:9200/customer/_update/1?pretty&pretty" -H 'Content-Type: application/json' -d'
{
  "doc": { "name": "Jane Doe", "age": 20 }
}
'

版本三:更新操作支持简单的脚本,下面的命令将给年龄增加5

curl -X POST "192.168.2.253:9200/customer/_update/1?pretty&pretty" -H 'Content-Type: application/json' -d'
{
  "script" : "ctx._source.age += 5"
}
'
11.删除文件
curl -X DELETE "192.168.2.253:9200/customer/_doc/2?pretty&pretty"
12.批量操作
  • 示例一:新增id=1和id=2的两条数据(具体是更新操作,还是插入操作,视情况而定)
curl -X POST "192.168.2.253:9200/customer/_bulk?pretty&pretty" -H 'Content-Type: application/json' -d'
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }
'

结果:

{
  "took" : 9,
  "errors" : false,
  "items" : [
    {
      "index" : {
        "_index" : "customer",
        "_type" : "_doc",
        "_id" : "1",
        "_version" : 8,
        "result" : "updated",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 13,
        "_primary_term" : 1,
        "status" : 200
      }
    },
    {
      "index" : {
        "_index" : "customer",
        "_type" : "_doc",
        "_id" : "2",
        "_version" : 4,
        "result" : "created",
        "_shards" : {
          "total" : 2,
          "successful" : 1,
          "failed" : 0
        },
        "_seq_no" : 14,
        "_primary_term" : 1,
        "status" : 201
      }
    }
  ]
}

说明:由结果可以看出,由于id=1的数据已经存在,则执行的是更新操作result:updated,id=2的数据不存在则执行新增操作result:created。

  • 示例二:一个更新,一个删除
curl -X POST "192.168.2.253:9200/customer/_bulk?pretty&pretty" -H 'Content-Type: application/json' -d'
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}
'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值