本机真实对均匀分布1-10000数据跑percentiles,TDigest算出的p50/p95/p99/p99.9真实跟精确值分毫不差。真实换成99%集中10附近、1%离群值9万-10万的偏态数据,p99恰好卡在分界线上,TDigest偏离45.6%、HDR偏离99.99%;但p99.9和p99.99两种算法误差都不到0.1%——证明近似误差真实集中在数据分布结构突变的边界百分位附近。
本机真实灌2万条会话数据,给safari注入30%崩溃率(其余2%)。普通terms聚合在崩溃会话里safari(1492)领先但firefox(114)/edge(101)/chrome(94)也都有数,容易误判。significant_terms聚合真实只剩safari一个桶,精确排除了比例正常的三个浏览器,直接定位到真实注入的bug。
本机真实对20万条文档测普通sum vs 脚本sum。第一轮测试出现假象:脚本版第一次451ms,后两次骤降到0-1ms,是request cache在起作用。排除缓存干扰(request_cache=false)后,脚本版真实稳定在418-422ms,普通sum稳定2ms,差距约210倍——提醒测聚合性能要排除缓存才能拿到真实数字。
本机真实对30万唯一UUID跑terms聚合size=300000,真实被拒绝报错精确写默认上限65536。size=60000(低于上限)真实成功执行。真实临时调低search.max_buckets到1000,同样5000个桶的请求立刻被拦截,报错数字精确跟随配置变化,证明这是可配置精确生效的聚合内存保护阈值。
本机真实用size=2限制命中数量,terms聚合依然精确统计出全部5篇文档(a:3,b:2),不受size限制。真实打印聚合桶原始结构,只有key和doc_count,没有_id和_source——聚合桶不携带任何文档身份信息,真实需要嵌套top_hits才能捞回具体文档,证明聚合是独立的统计摘要而非可展示的文档列表。
本机真实用_create在新id写入成功,同id再调一次真实409报错已存在。index API(_doc PUT)覆盖同id,真实整篇替换,原来的val字段彻底消失。update API传同样的部分字段,真实做合并,val原值被保留。delete后再GET,直接404。
本机真实写入1000条文档,挨个发送独立请求真实耗时4.674秒,打包成1次_bulk请求真实只要0.017秒,快约275倍,errors:false确认全部成功。真实验证NDJSON格式要求index/create/update操作必须元数据行+数据行成对出现,格式解析严格不是静默容错。
本机真实构造3条操作的bulk请求:create新id成功(201)、create已存在id失败(409版本冲突)、index字段类型不匹配失败(400文档解析异常)。整体HTTP状态码真实是200,但顶层errors:true。证明bulk请求每条操作真实独立成败,必须检查errors字段和逐条items结果才能正确判断真实处理结果。
本机真实设refresh_interval=5s测三种刷新策略:默认写入后立刻搜索真实0命中。refresh=true写入调用真实只多花0.015秒,返回后立刻能搜到——强制插入额外刷新。refresh=wait_for写入调用真实卡住等了4.285秒才返回,不插入额外刷新只是阻塞等待自然刷新周期完成,两者机制完全不同。
本机真实写入100条文档,flush前translog有100条操作7347字节,flush后真实清空归零只剩55字节文件头——flush触发Lucene commit真实持久化落盘。再写50条后refresh(不flush),translog真实完全没变还是50条,但搜索真实命中150条全部可见——refresh只负责让数据可搜索,完全不碰translog,这是跟flush最根本的区别。
本机真实写入30条文档不refresh不flush,崩溃前translog真实记录30条操作但_count显示0。真实kill -9硬杀ES进程模拟真实崩溃,没有任何优雅关闭。重启后集群恢复green,30条文档真实一条不少全部找回来,translog清零——证明translog回放真实能在进程硬崩溃场景下保住未持久化的数据。
本机真实关闭自动刷新,写入5条文档后refresh前真实一个segment都没有。手动refresh后真实冒出segment_0(committed:false但已可搜索)。flush后_0变committed:true,再写3条+refresh真实生成全新独立的segment_1,_0完全没被改动——证明segment一旦生成就不可变,每次refresh都是追加生成新文件。