当你搭好一个集群后,你就可以索引一些数据了。Elasticsearch有多种数据撷取方式,但殊途同归:将JSON文档放入Elasticsearch索引中。
你可以直接用一个简单的PUT请求索引文档,请求指定了索引名、文档唯一ID,请求体中包含一个或多个field:value键值对,如:
PUT /customer/_doc/1
{
"name": "John Doe"
}
这个请求会自动创建名为customer的索引如果它不存在,并会新增一个ID为1的文档,存储并索引name字段。
由于这是一个新增的文档,返回值显示本次操作结果为创建了该文档的version1版本:
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 26,
"_primary_term" : 4
}
新增的文档会立即对集群中的所有节点可用。你可以GET请求指定文档ID检索到它:
GET /customer/_doc/1
返回结果表明找到了指定ID的文档并展示了已索引的原始源字段。
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 26,
"_primary_term" : 4,
"found" : true,
"_source" : {
"name": "John Doe"
}
}
批量索引文档
如果你需要索引大量文档,则可以用bulk API批量操作。使用批量接口处理文档比单独提交请求快得多,因为它可以最大程度地减少网络I/O次数。
最佳批量处理大小取决于许多因素:文档大小和复杂性,索引和搜索负载以及群集可用的资源。你可以从单次批量处理1000至5000个文档,总负载在5MB至15MB之间开始尝试,然后不断调整以达到最优性能。