一、数据删除
1. 分片大小、分片个数
机器少的话,分片数最好是你的data节点的机器数倍数,这样请求负载能够均摊到每个机器上,如果机器比较多,最好保证分片数不要太多,比如最好别超过20-30个,然后根据你的数据量评估一下,尽量保证每个分片在15到20G
2.实际分片
a. 实际数据库存储大小
500万条 555M 100万->110M
b. 预计分配
200w/d -> 220M/d 200W*30 ->220*30=6600M=6.5G
即每月6-10G,共3台机器,3个分片
3. 删除策略
Elasticsearch 高版本已经取消了TTL功能,所以最好不要用TTL,如果需要删除文档,可以每月创建一个索引,到期后直接删除过期的索引,方便快捷,这也是官方推荐的方案。
1.mysql导入es性能
120万 476秒=8min 2000条/s
二、ES读写流程
https://www.processon.com/diagraming/5eba18da5653bb6f2a0329ec
三 keyword vs text
keyword:存储数据时候,不会分词建立索引
text:存储数据时候,会自动分词,并生成索引(这是很智能的,但在有些字段里面是没用的,所以对于有些字段使用text则浪费了空间)。text类型的会进行分词,查询时会根据匹配度等进行打分,分值高的文档查询时排在前面
must返回的文档必须满足must子句的条件,并且参与计算分值
filter返回的文档必须满足filter子句的条件,但是不像must一样,参与计算分值,智慧过滤符合条件的文档
时间支持
yyyy-MM-dd HH:mm:ss 2020-05-13 15:59:25
strict_date_optional_time 2020-05-13T15:59:25.4172994+08:00