在前面几节的内容中,我们学习索引、字段映射、分析器等,这些都是使用ES的基础,就像在数据库中创建表一样,基础工作做好以后,我们就要真正的使用它了,这一节我们要看看怎么向索引里写入数据、修改数据、删除数据,至于搜索嘛,因为ES的主要功能就是搜索,所以搜索的相关功能我们后面会展开讲。
Document的创建与更新
索引中的数据叫做document,和数据中的一条记录是一样的,而索引就像数据库中的一张表,我们向索引中添加数据,就像在数据库表中添加一条记录一样。下面我们看看怎么向索引中添加数据,
PUT //_doc/<_id>POST //_doc/PUT //_create/<_id>POST //_create/<_id>
在这个POST请求中,也就是索引的名字是必须的,这就好比我们向数据库中插入记录,要知道往哪张表里插是一样的。后面可以是_doc或者_create,这两个是什么意思呢?咱们慢慢看,除了这两个区别以外,再有就是请求的方法了,分为POST和PUT两种。一般情况下,POST用于数据的插入,PUT用户数据的修改,是不是这样呢?咱们把这4种方式都试一下,首先我们看一下POST //_doc/这种方式的请求,
POST /ik_index/_doc{ "id": 1, "title": "苹果", "desc": "苹果真好吃"}
在这里,索引我们使用的是上一节创建的ik_index,执行一下。然后我们再查询一下这个索引,
GET /ik_index/_search
返回结果如下:
{ "took": 1000, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 2, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "ik_index", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "id": 1, "title": "大兴庞各庄的西瓜", "desc": "大兴庞各庄的西瓜真是好吃,脆沙瓤,甜掉牙" } }, { "_index": "ik_index", "_type": "_doc", "_id": "fEsN-HEBZl0Dh1ayKWZb", "_score": 1, "_source": { "id": 1, "title": "苹果", "desc": "苹果真好吃" } } ] }}
我们重点看一下hits,这是我们查询出的结果,第一条是我们上一节存入的数据,不用管它。我们看一下第二条记录,注意一下_id这个字段,这个_id是这条记录在索引里的唯一标识,在插入数据的请求中,我们没有指定这个id,ES给我们自动生成了fEsN-HEBZl0Dh1ayKWZb。那么我们可不可以指定呢?试一下,
POST /ik_index/_doc/2{ "id": 1, "title": "香蕉", "desc": "香蕉真好吃"}
注意我们发送的请求,_doc