能够直接使用head插件建立索引,指定分片数和备份数便可。以下图:json
上图建立的索引,点开索引信息,mapping是空的,表示该索引的字段并无指定,咱们能够在建立索引的时候直接指定其字段名来建立。app
使用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" //日期格式化容许的类型 } } } } }
插入结果以下:表示索引建立成功spa
{ "acknowledged": true, "shards_acknowledged": true, "index": "book" }
关于结构化索引和非结构化索引的区别:插件
结构化索引,相似MySQL,咱们会对索引结构作预约义,包括字段名,字段类型等;那么,非结构化索引,就相似Mongo,索引结构未知,根据具体的数据来update索引的mapping。那么如何选择两种索引呢,仍是跟具体的使用场景有关,结构化相比非结构化,更易优化,性能好些,非结构化相较灵活,只是频繁update索引mapping会有必定的性能损耗。code
重点:须要特别特别注意的是:若是你的索引后期要修改,那么你只能重建一个你要修改为的索引,而后将数据复制到新的索引中,代码以下(亲测可用)orm
http://localhost:9200/_reindex { "source": { "index": "old_index" }, "dest": { "index": "new_index" } }
须要注意的是:指定id插入,使用的方法时PUT,路径是:服务ip:端口/索引名/类型名/id,过程及结果以下blog
须要特别注意的是:当不使用id插入的时候,请求方法必须是:POST,而且路径不能指定id,插入成功后会返回id。过程以及结果以下
关于插入数据须要注意的是:
当你建立的索引是非结构化的索引的时候,你能够随意插入你想要的字段做为属性。而且你每次插入的字段值能够是不一致的,索引会自动更新mapping,来适应数据。可是每次插入会耗费性能来作这些事情。
当你建立的索引是结构化的索引的时候,你若是插入的数据不符合你建立的mapping,那么也会自动更新mapping来适应你添加的数据,不会出现添加不上数据的状况。可是不建议这么作。
须要注意的是: 方法时POST,路径为:ES服务ip:端口/要修改的数据的id/_update,而且,须要再修改的json中,使用doc进行修改,以下图:
须要注意的是:方法时POST,路径跟上面一致,可是请求体的时候,使用的是script,而且里面的字段是固定的(应该是),inline字段的值时能够进行计算的。
须要注意的是:inline中的参数必须和params中的参数对应才可!
直接使用delete请求,指定索引,类型,id便可删除。
查询,是ElasticSearch的重中之重,因此会单独更新一篇进行详细解释。