5.ElasticSearch数据写入与删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.ElasticSearch数据写入与删除相关的知识,希望对你有一定的参考价值。
参考技术Ashard=hash(routing)%number_of_primary_shards;
一个索引有多个分片组成,多个分片数据组成了所有数据。当数据写入时,路由选择写入到那个分片,优先写入到主分片,然后再写入到副本分片。路由计算默认是基于数据id,也可以自己指定。
数据先写入缓存buffer里面,同时还要写一个事务日志,做持久化,高可用,防止节点突然出现故障,造成数据丢失。当达到一定阈值时,将缓存buffer中的数据写入到文件系统segment中。
可以使用PUT/POST,数据不存在则插入,存在则更新。也可以使用 _create /_ update , _create数据存在则报错,__update数据不存在则会报错。
2.1 常用请求参数
routing: 指定路由
refresh: 是否立即刷新 ,取值true/false,对于实时性要求比较高可以设置为true
wait_for_active_shards: 写入数据等待多少分片响应
version: 并发版本号
op_type: 操作类型,是create还是update
2.2 响应参数
_id : 数据唯一 id
result : created/updated
version: 数据版本号
seq_no:索引更新顺序号,每对索引进行更新操作,则进行自增。如果更新值与原数据值一样则不进行自增。
primary_term:主分片版本号
2.3 批量写入
单条写入性能差,批量效率更高,可以使用bulk关键字,进行批量写入。批量写入无事务保证,可能会局部成功,局部失败。重试机制由客户端保障。注意书写格式。
查询总条数使用参数:track_total_hits
3. 数据删除
3.1 单条删除
3.2批量删除
3.3条件删除
_delete_by_query:条件删除关键字
requests_per_second 控制每秒删除的数据条数,默认是-1,无限制,当数据量很大,需要删除的数据很多,es使用单线程需要删除很长时间,不建议这样做。设置每秒500~1000左右比较合适。
删除响应:
slice:切片,指定切片id和删除操作批次进行删除
可以使用 slices,它可以自动进行删除。指定一个数值N,es它会创建N个线程进行删除,N的最大值为分片数。
上面的语句会一次查询很多数据,可以使用scroll_size来指定每次查询的条数。它是采用快照查询,设置快照查询大小,控制每次查询数据量。
es大量删除数据,是通过异步任务进行删除,可以通过接口查看正在执行的任务。
Python读取多个excel文件(删除字段数据格式转换dataframe多表合并)并写入ElasticSearch实战(自动创建索引写入ElasticSearch探索性数据分析)
Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)
目录
以上是关于5.ElasticSearch数据写入与删除的主要内容,如果未能解决你的问题,请参考以下文章
5.elasticsearch映射操作(创建|修改|删除)及字段类型