开发中常用到的知识点文章收集, 注意有一些字段可以直接跳转到文章上哦

格式有点乱, 随手记一下, 哪天用到了再翻

1. es update_by_query 基础

有些更新命令 _update 照顾不到的, 就用这个, 而且通常是配合着 painless 脚本一起使用的

es painless 脚本应用

Elasticsearch Painless Script详解

2. es nested类型详解

给自己业务采用 nested 类型数据之前一定要考虑后续的业务场景是什么, 因为有关nested数据类型的查询,聚合, 更新都存在一些改动 比如, 聚合时八成需要用到 reverse_nested reverse_nested, 更新的时候, 要么全量覆盖更新对应的 nested字段, 要么就只能通过 painless脚本去进行部分更新

3. ES集群CPU占用高问题总结

有时候也需要排查下什么原因导致的 cpu 占用过高, 以下俩 query 用处就很大了:

/_nodes/hot_threads 查询当前占用资源线程

/_tasks?pretty 查询es 当前执行中的任务

POST http://0.0.0.0:9200/_tasks/LT5iTUgNQEWnQxY08JiVgw:1147634419/_cancel 取消指定的task

通过kibana 查看集群的监控 {kibanahost}/app/monitoring#/elasticsearch/nodes

Kibana和Marval中的Search Rate表示什么

4. 一次业务问题对 ES 的 cardinality 原理探究

之前开发过程中确实碰到了类似的问题, 要统计的一个字段是 keyword 类型, 每个 doc 中只有一个值, 但是使用 cardinalitydoc_count 还没有 value 的多, 哪怕把 precision_threshold设置成40000两者也还差一个数…. 所以想用 es 的去重功能还是要评估当前业务场景能不能接受这种误差