ElasticSearch(三):ES单机版本基本操做之删除,修改,插入

1. 建立索引

1.1 直接建立索引

能够直接使用head插件建立索引,指定分片数和备份数便可。以下图:json

1.2 建立结构化索引

上图建立的索引,点开索引信息,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"
  }
}

2. 插入数据

2.1 指定id插入

须要注意的是:指定id插入,使用的方法时PUT,路径是:服务ip:端口/索引名/类型名/id,过程及结果以下blog

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的重中之重,因此会单独更新一篇进行详细解释。

相关文章
相关标签/搜索