【Elasticsearch6.5】使用API新建、更新、删除、查询索引数据

引言

通过上篇博客,我们已经在Linux环境下安装好了单机版的Elasticsearch和Head插件。本篇博客主要是照着官网操作一些API,熟悉一下如何建立、查询索引等操作,熟悉一下Head管理页面,这样在后面集成代码的过程中也会有所共鸣。

Index API

通过Index API,我们可以创建或者更新一个具体的索引,数据是JSON格式的文档,通过下面的命令,可以创建一个名为book,类型为_doc,id为377c-11ea-bbca-ec0d9a30b0c2的索引:
  • 指定id
curl -X PUT 'localhost:9200/book/_doc/377c-11ea-bbca-ec0d9a30b0c2' -d '{"id":"58d9646a-377c-11ea-bbca-ec0d9a30b0c2","name":"知识课堂","grade":"九年级","subject":"语文","version":"人教版"}'
返回结果失败:

在这里插入图片描述

这里需要我们添加上请求头,所以上面的命令需要修改一下:
curl -H "Content-Type: application/json" -X PUT 'localhost:9200/book/_doc/58d9646a-377c-11ea-bbca-ec0d9a30b0c2' -d '{"name":"知识课堂","grade":"九年级","subject":"语文","version":"人教版"}'
返回结果成功:
{
	"_index": "book",
	"_type": "_doc",
	"_id": "58d9646a-377c-11ea-bbca-ec0d9a30b0c2",
	"_version": 1,
	"result": "created",
	"_shards": {
		"total": 2,
		"successful": 1,
		"failed": 0
	},
	"_seq_no": 0,
	"_primary_term": 1
}
返回结果中的"_shard"头信息给我们提供了关于分片的结果,total是指有多少个分片(主分片和副分片的总数)。
  • 不指定id
在不指定id的情况下,我们需要用POST请求,而不是PUT,结果中会返回一个自动生成的id。
curl -H "Content-Type: application/json" -X POST 'localhost:9200/book/_doc' -d '{"name":"知识演练课堂","grade":"八年级","subject":"数学","version":"北师大版"}'
返回结果:
{
	"_index": "book",
	"_type": "_doc",
	"_id": "qTd_YXQBUDqEcIQQ2OB3",
	"_version": 1,
	"result": "created",
	"_shards": {
		"total": 2,
		"successful": 1,
		"failed": 0
	},
	"_seq_no": 0,
	"_primary_term": 1
}

Get API

通过Get API,我们可以从索引中获取到已经存在的数据,通过下面的命令,我们可以得到索引为Book,类型为_doc,id为58d9646a-377c-11ea-bbca-ec0d9a30b0c2的JSON文档数据:
curl 'localhost:9200/book/_doc/58d9646a-377c-11ea-bbca-ec0d9a30b0c2?pretty=true'
URL后面pretty=true的含义是返回易读格式。
返回结果:

【Elasticsearch6.5】使用API新建、更新、删除、查询索引数据_第1张图片

返回的数据中,found字段表示查询成功,_source字段返回原始记录。
查不到,返回的found字段值则是false。

Delete API

通过delete API,我们删除指定id的索引数据:
curl -X DELETE 'localhost:9200/book/_doc/58d9646a-377c-11ea-bbca-ec0d9a30b0c2"'
返回的结果:
{
	"_index": "book",
	"_type": "_doc",
	"_id": "58d9646a-377c-11ea-bbca-ec0d9a30b0c2\"",
	"_version": 2,
	"result": "deleted",
	"_shards": {
		"total": 2,
		"successful": 1,
		"failed": 0
	},
	"_seq_no": 1,
	"_primary_term": 1
}
返回的结果,result字段返回deleted,表明已经删除。如果没有查询到指定的记录,result字段返回的是not_found.

Update API

通过Update API,我们更新索引数据,和新增index发送的请求参数一致:
curl -H "Content-Type: application/json" -X PUT 'localhost:9200/book/_doc/qTd_YXQBUDqEcIQQ2OB3' -d '{"name":"数学知识演练课堂","grade":"八年级","subject":"数学","version":"北师大版"}'
通过上面的请求,我们把原来的书名字“知识演练课堂”改成“数学知识演练课堂”,下面是返回的结果:
{
	"_index": "book",
	"_type": "_doc",
	"_id": "qTd_YXQBUDqEcIQQ2OB3",
	"_version": 2,
	"result": "updated",
	"_shards": {
		"total": 2,
		"successful": 1,
		"failed": 0
	},
	"_seq_no": 3,
	"_primary_term": 1
}
从结果上,我们可以看出,更新之后,版本version从原来的1变成了2,操作类型(result)从created变成updated。

在这里插入图片描述

Search API

  • 查询所有
curl -X GET 'localhost:9200/book/_doc/_search?pretty=true'
返回的结果:

【Elasticsearch6.5】使用API新建、更新、删除、查询索引数据_第2张图片

返回结果的 took字段表示该操作的耗时(单位为毫秒),timed_out字段表示是否超时,hits字段表示命中的记录,其中total表示总数,hits表示索引数据。
  • 按字段条件查询(term/match)
1)term查询八年级的记录:
curl -H "Content-Type: application/json" -X POST 'localhost:9200/book/_doc/_search?pretty=true' -d '{"query":{"term":{"grade.keyword":"八年级"}}}'
返回的结果:

【Elasticsearch6.5】使用API新建、更新、删除、查询索引数据_第3张图片

2)match查询北师大版的记录:
curl -H "Content-Type: application/json" -X POST 'localhost:9200/book/_doc/_search?pretty=true' -d '{"query":{"match":{"version.keyword":"北师大版"}}}'
返回的结果:

【Elasticsearch6.5】使用API新建、更新、删除、查询索引数据_第4张图片

这里使用的term和match关键字,匹配查询结果,并且字段需要加上.keyword才能查询到结果,这属于6.X版本的新特性,引入了keyword.
上面都是一些比较简单的总结,属于熟悉Elasticsearch语法和结构的阶段,后面在实际应用中,可能会遇到各种各样的问题,先有一些简单了解,不至于到时候不知从何入手。

你可能感兴趣的:(【架构设计】,#,Elasticsearch,elasticsearch,API)