ElasticSearch(三):ES单机版本基本操作之删除,修改,插入
1. 创建索引
1.1 直接创建索引
可以直接使用head插件创建索引,指定分片数和备份数即可。如下图:
1.2 创建结构化索引
上图创建的索引,点开索引信息,mapping是空的,表示该索引的字段并没有指定,我们可以在创建索引的时候直接指定其字段名来创建。
使用POSTMAN进行创建(任何工具都行,习惯)
请求路径:localhost:9200/book --》ES服务的ip:端口/要创建的索引名,请求方法:PUT
请求体:
{ "settings":{ "number_of_shards":5, //分片数 "number_of_replicas":1 //备份数 },
//映射文件 "mappings":{
//类型名 "novel":{
//文档的所有字段以及类型 "properties":{ "name":{ "type":"text" }, "author":{ "type":"keyword" }, "word_count":{ "type":"integer" }, "publish_date":{ "type":"date", "format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd" //日期格式化允许的类型 } } } } }
插入结果如下:表示索引创建成功
{ "acknowledged": true, "shards_acknowledged": true, "index": "book" }
关于结构化索引和非结构化索引的区别:
结构化索引,类似MySQL,我们会对索引结构做预定义,包括字段名,字段类型等;那么,非结构化索引,就类似Mongo,索引结构未知,根据具体的数据来update索引的mapping。那么如何选择两种索引呢,还是跟具体的使用场景有关,结构化相比非结构化,更易优化,性能好些,非结构化相较灵活,只是频繁update索引mapping会有一定的性能损耗。
重点:需要特别特别注意的是:如果你的索引后期要修改,那么你只能重建一个你要修改成的索引,然后将数据复制到新的索引中,代码如下(亲测可用)
http://localhost:9200/_reindex { "source": { "index": "old_index" }, "dest": { "index": "new_index" } }
2. 插入数据
2.1 指定id插入
需要注意的是:指定id插入,使用的方法时PUT,路径是:服务ip:端口/索引名/类型名/id,过程及结果如下
2.2 不指定id插入
需要特别注意的是:当不使用id插入的时候,请求方法必须是:POST,并且路径不能指定id,插入成功后会返回id。过程以及结果如下
关于插入数据需要注意的是:
当你创建的索引是非结构化的索引的时候,你可以随意插入你想要的字段作为属性。并且你每次插入的字段值可以是不一致的,索引会自动更新mapping,来适应数据。但是每次插入会耗费性能来做这些事情。
当你创建的索引是结构化的索引的时候,你如果插入的数据不符合你创建的mapping,那么也会自动更新mapping来适应你添加的数据,不会出现添加不上数据的情况。但是不建议这么做。
3. 修改数据
3.1 直接修改doc数据
需要注意的是: 方法时POST,路径为:ES服务ip:端口/要修改的数据的id/_update,并且,需要再修改的json中,使用doc进行修改,如下图:
3.2 使用内置脚本修改(可以对数据进行计算)
需要注意的是:方法时POST,路径跟上面一致,但是请求体的时候,使用的是script,并且里面的字段是固定的(应该是),inline字段的值时可以进行计算的。
3.3 使用内置脚本并制定参数进行修改
需要注意的是:inline中的参数必须和params中的参数对应才可!
4 删除数据
直接使用delete请求,指定索引,类型,id即可删除。
查询,是ElasticSearch的重中之重,所以会单独更新一篇进行详细解释。
posted on 2018-08-21 11:47 一个什么都不会的人 阅读(5041) 评论(0) 编辑 收藏 举报