记录下ES的常用操作,方便查看。
painless
ES 使用的是 painless
语言。
更新数组
1 |
索引操作
删除单个索引
1 | DELETE /index_name |
删除所有索引
1 | # 两张选其一即可 |
索引复制
1 | POST /_reindex?wait_for_completion=false |
文档操作
删除单个文档
1 | DELETE /index/_doc/id |
文档重建
1 | PUT /index/type/id |
显示版本信息
ES文档都一个_version的计数器,用来记录文档的变更情况。需要注意的是ES并没有保存历史文档,_version只是一个计数器。需要查看version, 增加查询参数: version=true
查询
根据 _id
查询
1 | { |
指定时间范围,这里的 date
是文档中的字段
1 | { |
数组匹配
1 | // 这里 hosts 是一个数组类型 |
bool 查询
Bool 查询结构如下:
1 | { |
其中 must 对应 AND
操作, should 对应 should
操作。需要注意的是,在有 filter
和 must
时,should
的值不会影响的搜索结构。如果需要 must
和 should
同时满足,可以使用 minimum_should_match
字段:
1 | { |
查询聚合
text
类型的字段默认不支持聚合,可以使用如下方式(在 field 名字后面加上 .keyword
):
1 | { |
聚合排序
使用自己的 key 排序
1 | { |
常用统计
去重统计
cardinality
是基于HyperLogLog++(HLL)一个近似算法,可以通过precision_threshold
来控制精度,precision_threshold
接受 0–40,000 之间的数字。1
2
3
4
5
6
7
8
9
10{
"aggs": {
"attacker_sum": {
"cardinality": {
"field": "attacker_id",
"precision_threshold": 1000000
}
}
}
}