本文已参与[新人创作礼]活动,一起开启掘金创作之路
特别说明:ES是不支持删除和修改mapping中已经存在的字段,所以只能新建索引并替换旧的索引,下面会介绍详细方法 1:新建索引 PUT http://119.28.54.222:9200/yangonce/
说明:yangonce是索引,mappings是固定格式,y_type是类型,properties是固定格式,下面就是字段
#number_of_replicas 是数据备份数,如果只有一台机器,设置为0
#number_of_shards 是数据分片数,默认为5,有时候设置为3
{
"settings": { "number_of_shards": "5", "number_of_replicas": "1" }, "mappings": { "y_type": { "properties": { "name": { "type": "long" }, "keyword": { "type": "long" }, "usernma": { "type": "long" } } } } }
2:创建索引别名 POST http://119.28.54.222:9200/_aliases
#actions.add.alias是指的是给yangonce索引创建一个别名test_index,多个索引可以用同一个别名,别名不仅仅可以关联一个索引,它能聚合多个索引,我们为索引my_index_1 和 my_index_2 创建一个别名my_index_alias,这样对my_index_alias的操作(仅限读操作),会操作my_index_1和my_index_2,类似于聚合了my_index_1和my_index_2.我们是不能对my_index_alias进行写操作,当有多个索引时alias,不能区分到底操作哪一个 { "actions": { "add": { "index": "yangonce", "alias": "test_index" } } } 注意:别名没有修改语法,修改别名时,可以先删除别名,再添加
{ "actions":[ {"remove":{"index","yangonce","alias":"alias1"}}, {"add":{"index":"test1","alias":"alias2"}} ] }
3:对数据的增删改 增加文档
POST http://119.28.54.222:9200/yangonce/y_type/
修改文档
POST http://119.28.54.222:9200/yangonce/y_type/rapz9nMBuyPvuRHBLPwg/_update rapz9nMBuyPvuRHBLPwg是文档ID,如果没有这个ID的数据,那会新建一条这个ID的文档,_update固定的
批量修改,比如我想要更改user_id是3的所有数据的ignore_num更改为3,这里就需要用到script语法
POST http://119.28.54.222:9200/weixin/weixin_type/_update_by_query/ _update_by_query固定的,
更新多个字段就需要 "script": "ctx._source['ignore_num']=122;ctx._source['brief']='杨欢'";query就是筛选条件
删除文档
DELETE http://119.28.54.222:9200/yangonce/y_type/rapz9nMBuyPvuRHBLPwg/
批量删除
POST http://119.28.54.222:9200/retrieval/retrieval_type/_delete_by_query
4:删除索引 DELETE http://119.28.54.222:9200/yangonce/
5:给已有的索引增加字段 需求:给zhengze_count索引,zhengze_count_type类型下新增一个usernames字段,字段类型是long,如果类型是text,es是会分词的,如果设置为keyword,es是不会分词的
格式:PUT http://119.28.54.222:9200/zhengze_count/zhengze_count_type/_mapping/
说明:zhengze_count是索引名,zhengze_count_type是type,_mapping是固定格式,
6:修改获取删除索引字段: ES目前没有直接修改字段获取删除的功能,所以只能用比较麻烦的方法来实现,
步骤:
创建新索引 新索引创建新mapping 原索引导出数据到新索引 新索引创建原索引一致的别名 删除原索引 针对于第四步:这个就要用到索引别名了,如果你最开始建索引的时候没有考虑设计索引别名,那就杯具了。 你可以把索引的名称设置成name_v1 别名设置为name,然后代码里面访问搜索的时候连接的其实是别名name; 这样当你以后索引结构调整需要重新创建的时候,就可以在新建一个索引name_v2,然后把数据初始化完成之后,把原来索引的别名去掉,把name_v2的别名设置成name,这样代码就不用改动了。
创建索引设置别名请参考上面,这里是写将旧索引的数据导入到新索引中的代码
POST http://119.28.54.222:9200/_reindex
这是将yangonce索引的全部数据导入到yangonces中,
#source是原索引,dest是目标索引
{ "source": { "index": "yangonce" }, "dest": { "index": "yangonces" } }
这是将yangonce索引指定的数据导入到yangonces中,
{ "source": { "index": "yangonce", "type": "y_type", "query": { "term": { "name": "shao" } } }, "dest": { "index": "yangonces" } }