Elasticsearch 文档的创建与查询

2015-08-17 08:58:17   最后更新: 2015-11-02 18:09:05   访问数量:2218




在 Elasticsearch 中存储数据被称为“索引”(indexing)

在 Elasticsearch 中,文档归属于一种类型(type),而这些类型存在于索引(index)中

Index 构成了类似于 mysql 中 database 的抽象层,type 则构成了类似于 mysql 中 table 的抽象层,每一个文档(document)则构成了类似于 mysql 中元组的抽象层,文档的每个域(field)则构成了类似于 mysql 中列的抽象层

 

 

传统的数据库中,使用特定的索引(如使用 B 树数据结构)来增加数据访问速度,Elasticsearch 和 Lucence 中,使用倒排索引达到相同目的

 

我们通过创建一个员工目录来学习如何创建和插入数据

  • index -- megacorp
  • type -- employee

 

使用下面的方式进行插入:

curl -XPUT 'http://localhost:9200/megacorp/employee/1' -d '{ "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }'

 

 

这样我们创建了一条数据,请求路径包含了三个信息

elasticsearch 请求
请求说明是否可选
megacorpindex
employeetype
1ID

如果在请求中带有 ID,elasticsearch 会默认生成一个唯一 ID

 

通过请求加入更多员工信息:

PUT /megacorp/employee/2 { "first_name" : "Jane", "last_name" : "Smith", "age" : 32, "about" : "I like to collect rock albums", "interests": [ "music" ] } PUT /megacorp/employee/3 { "first_name" : "Douglas", "last_name" : "Fir", "age" : 35, "about" : "I like to build cabinets", "interests" : [ "forestry" ] }

 

 

通过请求 http header 信息即可判断文档是否存在

curl -i -XHEAD http://localhost:9200/website/blog/123

 

若返回 200OK 则说明文档存在,返回 404 Not Found 则说明文档不存在

 

文档在 Elasticsearch 中是不可变的,但我们可以通过重建索引的方式更新已存在的文档

PUT /website/blog/123 { "title": "My first blog entry", "text": "I am starting to get the hang of this...", "date": "2014/01/02" }

 

响应中我们看到 _version 增加了,而 created 域则返回 false,表示仅仅覆盖了同 ID 的已存在文档

{ "_index" : "website", "_type" : "blog", "_id" : "123", "_version" : 2, "created": false }

 

 

实际上,Elasticsearch 删除了原有的文档,并添加了一个完整的新文档

 

文档的删除语法与查询语法是基本一致的,只是需要通过 DELETE 方式传递参数

curl -XDELETE 'http://localhost:9200/website/blog/123'

 

如果文档被找到,则会返回 200OK,并且删除对应的文档

返回:

{ "found" : true, "_index" : "website", "_type" : "blog", "_id" : "123", "_version" : 3 }

 

如果文档没有被找到,则会返回 404 Not Found

{ "found" : false, "_index" : "website", "_type" : "blog", "_id" : "123", "_version" : 4 }

 

 






技术帖      mysql      database      技术分享      搜索引擎      检索      search      index      elasticsearch      文档      document      创建      查询      type      dsl     


京ICP备15018585号