ElasticSearch文档详解(定义格式及4大文档操作)

ElasticSearch文档详解(定义格式及4大文档操作)-mikechen

ElasticSearch文档定义

ElasticSearch创建索引好之后,就可以来创建文档了,并且添加数据进去,这里的文档可以类比成关系型数据库的数据表。

Elasticsearch文档就是类似于对象的概念,里面存储很字段和值,值可以是字符串、数字、时间等类型。

 

ElasticSearch文档格式

文档是以JSON格式存储在Elasticsearch,格式如下:

{
    "first_name": "mike",
    "last_name":  "chen",
    "info": {
        "interests": [ "running", "books" ]
    }
}

使用Json作为文档序列化格式,Json目前已经被大多语言支持,并且成为NoSQL领域的标准格式,具有简洁易读的特点。

 

ElasticSearch文档属性

一个文档不仅仅包含它的数据,也包含了元数据,ElasticSearch中有三个较为重要的元素分别是。

1._index

索引类似关系型数据口中的数据库,存储和索引数据的地方。

2._type

type可以理解成关系型数据库中的表,表内存储的对象有着相同的结构,表示一类相似的文档。

3._id

id时文档的唯一表示,由ElasticSearch自动生成。

 

ElasticSearch文档操作

1.ElasticSearch新建文档

新建文档首先要新建一个索引,可以通过 PUT来创建索引。

比如:

PUT http://localhost:9200/blog

然后开始新建文档,相当于关系式数据库里的:创建了数据库->创建表(ElasticSearch文档)。

PUT blog/_doc/1
{
  "title":"添加文档",
  "content":"mikechen的互联网架构"
}

PUT中的“1”是添加的文档的id,若数据没有自然ID,则可使用POST请求方法。

POST blog/_doc
{
  "title":"添加文档",
  "content":"mikechen的互联网架构"

 

2.ElasticSearch获取文档

查看文档时,需要指明文档的唯一性标识,就好像我们在用MySQL中数据的主键查询。

命令:

GET http://127.0.0.1:9200/shopping/_doc/1

结果:

"_index": "shopping",
   "_type": "_doc",
   "_id": "1",
   "_version": 2,
   "_seq_no": 2,
   "_primary_term": 2,
   "_source": { # 文档信息
       "category": "架构",
       "url": "https://mikechen.cc"
   }

 

3.ElasticSearch更新文档

直接重新PUT,即可更新。

比如:

POST /info/teacher/  {
	"name":"mikechen",
	"category":"架构",
}

直接put会替换整个文档的内容,将原有的数据内容覆盖,这就是修改更新文档。

更新文档,ES内部操作顺序如下:

从旧文档中检索JSON
修改它
删除旧文档
索引新文档

 

4.ElasticSearch删除文档

采用DELETE 命令,即可删除。

比如:

DELETE http://127.0.0.1:9200/shopping/_doc/1

指定文档id,删除ElasticSearch文档。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法