es查询两列相减大于某个值的数据_南京师范大学汇编语言期末试卷
时间: 2024-02-20 22:57:15 浏览: 69
好的,你的问题是如何用ES查询两列相减大于某个值的数据。可以使用ES的聚合功能,具体步骤如下:
1. 使用ES的聚合功能,对要查询的两个列进行求差操作,得到新的一列数据。
2. 使用ES的聚合功能,对新的一列数据进行过滤,只保留差值大于某个值的数据。
3. 返回符合条件的数据。
具体的查询语句如下,假设要查询的两个列为col1和col2,要求col1-col2大于10:
```
POST /your_index/_search
{
"size": 0,
"aggs": {
"diff_col": {
"scripted_metric": {
"init_script": "state.values = []",
"map_script": "def diff = doc['col1'].value - doc['col2'].value; state.values.add(diff);",
"combine_script": "return state.values",
"reduce_script": "def result = []; for (values in states) { result.addAll(values) }; return result;"
}
},
"filtered_diff_col": {
"bucket_selector": {
"buckets_path": {
"diff": "diff_col.value"
},
"script": "params.diff > 10"
}
}
}
}
```
其中,使用scripted_metric聚合对col1和col2进行求差操作,得到新的一列数据。然后使用bucket_selector聚合对新数据进行过滤,只保留差值大于10的数据。最后返回符合条件的数据。
阅读全文