Elasticsearch7.8官档精华(二)

350 阅读2分钟

开始上手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之间,你可以从中找到最佳大小。

  1. 下载官网准备好的数据集合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"
}
  1. 使用以下_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请求搜索数据。