elasticsearch - 为什么 elasticsearch 不支持 min_doc_count 和 order by _count asc?
问题描述
要求:
group by hldId having count(*) = 2
弹性搜索查询:
"aggs": {
"groupByHldId": {
"terms": {
"field": "hldId",
"min_doc_count": 2,
"order" : { "_count" : "asc" }
}
}
}
但没有记录返回
"aggregations" : {
"groupByHldId" : {
"doc_count_error_upper_bound" : -1,
"sum_other_doc_count" : 2660,
"buckets" : [ ]
}
}
但如果更改为desc
,则返回
"buckets" : [
{
"key" : 200035075,
"doc_count" : 355
},
或者如果没有min_doc_count
,它也有回报
"buckets" : [
{
"key" : 200000061,
"doc_count" : 1
},
那么为什么 havemid_doc_count
和asc
direction 都返回空呢?
解决方案
您可以尝试这样,bucket selector
使用自定义script
.
{
"aggs": {
"countfield": {
"terms": {
"field": "hldId",
"size": 100,
"order": {
"_count": "desc"
}
},
"aggs": {
"criticals": {
"bucket_selector": {
"buckets_path": {
"doc_count": "_count"
},
"script": "params.doc_count==2"
}
}
}
}
}
}
推荐阅读
- javascript - 排序一个数组并保持其他两个数组同步
- angular - 角度订阅中的方法调用超出了组件属性的范围
- python - 如何使用 Python 列出远程主机目录中的文件?
- react-native - 反应原生:尝试获取时为空状态
- postgresql - Postgres 光标目标
- apache-spark - 有没有更好的方法在 Spark 中加载一个巨大的 tar 文件同时避免 OutOfMemoryError?
- r - R 字符向量转化为因子
- python - 索引上一行或下一行时可以避免数据框行循环吗?
- nginx - Nginx 逻辑与运算符
- python-2.7 - 将带有 dict 属性的 JSON 写入 Google Cloud Datastore