5.ElasticSearch数据写入与删除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.ElasticSearch数据写入与删除相关的知识,希望对你有一定的参考价值。

参考技术A

shard=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映射操作(创建|修改|删除)及字段类型

5.elasticsearch映射操作(创建|修改|删除)及字段类型

资讯Elas推出比特币企业套件Signavera

Elasticsearch按查询删除未完成删除

5.elasticsearch-分片

Redis值的写入与读取