ElasticSearch常用API

142 阅读1分钟

_cat

  • GET /_cat/nodes:查看所有节点
  • GET /_cat/health:查看 es 健康状况
  • GET /_cat/master:查看主节点
  • GET /_cat/indices:查看所有索引 show databases

创建索引

PUT /demo81
{
  "mappings": {
    "properties": {
        "title": {
          "type": "text",
          "analyzer": "ik_smart"
        },
        "tag": {
          "type": "keyword"
        },
        "publishTime": {
          "type": "date"
        }
      }
  }
}

索引一个文档(保存)

保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识 在 customer 索引下的 external 类型下保存 1 号数据为

PUT customer/external/1
{
    "name": "John Doe"
}

PUT 和 POST 都可以

  • POST 新增。如果不指定 id,会自动生成 id。指定 id 就会修改这个数据,并新增版本号
  • PUT 可以新增可以修改。PUT 必须指定 id。由于 PUT 需要指定 id,我们一般都用来做修改 操作,不指定 id 会报错。

查询文档

GET customer/external/1
{
 "_index": "customer", //在哪个索引
"_type": "external", //在哪个类型
"_id": "1", //记录 id
"_version": 2, //版本号
"_seq_no": 1, //并发控制字段,每次更新就会+1,用来做乐观锁
"_primary_term": 1, //同上,主分片重新分配,如重启,就会变化
"found": true, "_source": { //真正的内容
"name": "John Doe"
}
}

乐观锁 更新携带 ?if_seq_no=0&if_primary_term=1

更新文档

POST customer/external/1/_update
{ 
	"doc":
	{ 
		"name": "John Doew"
	}
}
带_update 操作会对比源文档数据,如果相同不会有什么操作,文档 version 不增加
POST customer/external/1
{ 
	"name": "John Doe2"
}
PUT customer/external/1
{ 
	"name": "John Doe"
}
PUT 操作总会将数据重新保存并增加 version 版本

看场景:对于大并发更新,不带 update; 对于大并发查询偶尔更新,带 update;对比更新,重新计算分配规则。

删除文档&索引

DELETE customer/external/1

DELETE customer

bulk批量API

POST customer/external/_bulk
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

POST /customer/_doc/_bulk
{"index":{"_id":"13"}}
{"name":"tzptest13"}
{"delete":{"_id":"11"}}
{"create":{"_id":"14"}}
{"name":"tzptest14"}