索引文档

索引单个文档

集群启动运行之后,您就可以准备索引一些数据了。Elasticsearch有很多的选项, 但是归根结底他们做的都是一样的事情:把JSON文档放进Elasticsearch里面进行索引。

您可以直接通过一个简单的PUT请求,来指定你想要添加索引的文档, 请求体中包含一个唯一的文档ID,一个或多个的 “域”:"值"对。

//kibana
//http://localhost:5601/app/kibana#/dev_tools/console?_g=()
PUT /customer/_doc/1
{
  "name": "John Doe"
}

//curl
curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}
'

如果customer索引不存在,这个请求自动的就创建,随后添加一个ID为1,并包含一个name域的文档进行存储和索引。

因为这是一个新的文档, 所以返回的应答报文中显示这份文档的版本号是1。

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 15,
  "_primary_term" : 2
}

这个新的文档可以立刻从集群中的任何一个节点访问到,您可以通过指定文档ID的GET请求来获取该文档。

{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 14,
  "_primary_term" : 2,
  "found" : true,
  "_source" : {
    "name" : "John Doe"
  }
}
批量索引文档

倘若你有很多文档要建索引, 您可以通过bulk API在批处理脚本里提交。通过bulk来批处理文档比单个提交请求快的多的方式, 因为这样可以尽可能的减少网络往返响应的次数。

优化批处理大小主要有以下几个因素决定:文档的数量和复杂程度、建立索引和搜索的负载和集群可用资源。一个好的批处理其实域1000-5000个文件,总负载在5MB-15MB之间。在此,您可以通过尝试来找到最佳的平衡点。

导如一些数据导Elasticsearch,这样你就可以开始搜索和分析:

  1. 下载accounts.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请求将account数据倒入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个文档已经索引成功。

curl "localhost:9200/_cat/indices?v"
yellow open   bank                            rZ4BxAhyQU63hKm3x42_kA   1   1       1000            0    414.2kb        414.2kb
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容