sql - Elasticsearch 有 count(*)= n
问题描述
我有一个简单的索引(在弹性搜索中),需要执行 SQL 数据库中可用的查询。
我的索引结构:
'{"id":"1","userid":"1"}'
'{"id":"2","userid":"1"}'
'{"id":"3","userid":"1"}'
'{"id":"4","userid":"2"}'
'{"id":"5","userid":"3"}'
现在我需要执行这个查询:
select count(userid),userid from my-index group by userid having count(userid)=3;
是否可以在弹性搜索中执行此类查询?
解决方案
您可以将术语聚合与存储桶选择器聚合一起使用
添加具有索引映射、搜索查询和搜索结果的工作示例
索引映射:
{
"mappings": {
"properties": {
"userid": {
"type": "keyword"
}
}
}
}
搜索查询:
{
"size": 0,
"aggs": {
"userId": {
"terms": {
"field": "userid"
},
"aggs": {
"the_filter": {
"bucket_selector": {
"buckets_path": {
"the_doc_count": "_count"
},
"script": "params.the_doc_count == 3"
}
}
}
}
}
}
搜索结果:
"aggregations": {
"userId": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1", // this denotes the userid having count==3
"doc_count": 3
}
]
}
推荐阅读
- python - 如何在段落文本中使用其他一些标签刮取段落标记中的文本?
- android - 如何将已签名的 APK 转换为未签名的 APK
- python - 为过去一周的特定游戏下载 50 个 twitch.tv 剪辑
- react-native - 更改屏幕时没有出现 ActivityIndicator
- r - R:如何查找/替换然后自动执行代码?
- python - 如何将字典附加到字典?
- python - 如何在.cfg文件中存储带有#的单词
- c# - Azure Web App - 大文件上传、单个 POST 请求与每个文件的多个帖子
- c# - Mac 上的 Visual Studio 进入调试模式,没有断点,对 ASP.NET Core 有不寻常的建议
- flutter - 如何在执行某些功能之前延迟 1 秒?