导语
本文将介绍如何将对象加入到Elasticsearch中,以便后面的检索语法学习。
需求提出
我们为Megacorp工作,而且作为”We love our drones!”的HR新发起项目的一份子,被告知要创建一个员工目录。这个目录应该使得老板感到轻松而且实时、协同、动态协作,所以它有一些业务需求如下:
- 使数据包含多值标签,数字,和全文。
- 允许结构化搜索,如发现30岁以上的员工。
- 允许简单的全文搜索和更复杂的短语搜索。
- 返回突出显示搜索的文本片段匹配的文档。
使管理人员可以在数据上构建数据分析仪表盘。
建立员工索引文件
该订单的第一个任务是存储雇员数据。这将采取一个员工文档的形式:一个文档代表了一个员工。存储数据的行为在Elasticsearch叫做索引,但索引文件之前,我们需要决定在哪里存储它。
一个Elasticsearch集群可以包含多个指标(索引),进而包含多个类型。这些类型保存多个文档,每个文档都有多个字段。
默认情况下,文档中的每个索引字段(有一个反向索引),因此是可搜索的。没有反向索引的字段是不能搜索。Elasticsearch 和 Lucene 为了提供数据检索能力,均采取反向索引的方式。
对于我们的员工目录,我们要做到以下几点:
- 为每个员工建立索引文档,其中包含一个员工的所有信息。
- 每一个文档都是employee类型。
- 这种类型将保存在megacorp的索引中。
- 此索引将驻留在我们Elasticsearch集群中。
实际上,这是很容易的(即使它看起来像很多步骤)。我们可以用一个命令去命令执行这些操作:
PUT /megacorp/employee/1
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
这个请求体是JSON文档,包含对该员工的所有信息。他的名字是约翰·史密斯,他25岁,喜欢攀岩。
值得注意的是,路径/megacorp/employee/1包含三个信息:
实践
1、为员工目录添加第一个员工信息
在sence中,输入如下的curl请求代码
curl -XPUT 'localhost:9200/megacorp/employee/1?pretty' -d'
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}'
如下图所示:
是不是很简单!没有必要先执行任何管理任务,如创建索引或指定每个字段包含的数据类型。我们可以直接索引文档。Elasticsearch附带所有的缺省设置,所以所有必要的管理任务在后台被照顾,使用默认值。
在继续之前,让我们添加更多的员工目录:
添加第二个员工信息到员工目录
在sence中,输入如下的curl请求代码
curl -XPUT 'localhost:9200/megacorp/employee/2?pretty' -d'
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}'
如下图所示:
添加第三个员工信息到员工目录
在sence中,输入如下的curl请求代码
curl -XPUT 'localhost:9200/megacorp/employee/3?pretty' -d'
{
"first_name" : "Douglas",
"last_name" : "Fir",
"age" : 35,
"about": "I like to build cabinets",
"interests": [ "forestry" ]
}'
如下图所示:
结语
本文讲述了如果添加文档对象数据,以json的格式进行添加。下次的文章,将会介绍如何进行检索。