开始上手Elasticsearch
创建文档
当你的es集群启动后就可以为数据创建索引。尽管创建的方式有很多,但底层都是以JSON形式的文档存进es索引。
使用PUT请求,并在请求体里明确文档对应的索引、唯一的文档ID,以及一个或多个的"filed":"value"键值对。
PUT /customer/_doc/1
{
"name":"John Doe"
}
创建一个新文档后,响应为文档创建成功且其version(更新次数)为1。
{
"_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"
}
}
批量创建文档
如果你有需要创建很多文档,可以使用bulkAPI来批量提交,这比分开一次次提交数据进行网络交互要快得多。
最佳批次大小取决的一些因素:文档大小和复杂性,创建索引和搜索的负载能力,以及群集中的可用资源。批次大小可以从1,000至5,000个文档开始尝试,有效负载在5MB至15MB之间,你可以从中找到最佳大小。
- 下载官网准备好的数据集合account.json。随机生成的数据如下:
{
"account_number": 0,
"balance": 16623,
"firstname": "Bradshaw",
"lastname": "Mckenzie",
"age": 29,
"gender": "F",
"address": "244 Columbus Place",
"employer": "Euron",
"email": "bradshawmckenzie@euron.com",
"city": "Hobucken",
"state": "CO"
}
- 使用以下_bulk请求把数据存进索引bank:
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
curl "localhost:9200/_cat/indices?v"
响应为1000文档被创建成功
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open bank l7sSYV2cQXmu6_4rJWVIww 5 1 1000 0 128.6kb 128.6kb
开始搜索
一旦你把数据存进es,你可以使用_search请求搜索数据。