如何定义Elasticsearch查询中具有特定字段的结果项的百分比?

2024-01-12

我有一个搜索查询,返回所有匹配的项目users有类型的manager or lead.

{
  "from": 0,
  "size": 20,
  "query": {
    "bool": {
      "should": [
        {
          "terms": {
            "type": ["manager", "lead"]
          }
        }
      ]
    }
  }
}

有没有办法定义“经理”类型的结果百分比?

换句话说,我希望结果中有 80% 的用户属于同一类型manager20% 与类型lead.


我想提出一个使用建议bucket_path聚合。据我所知,此聚合需要在直方图聚合的子聚合中运行。由于您的映射中有这样的字段,所以我认为这个查询应该适合您:

{
  "size": 0,
  "aggs": {
    "NAME": {
      "date_histogram": {
        "field": "my_datetime",
        "interval": "month"
      }, 
      "aggs": {
        "role_type": {
          "terms": {
            "field": "type",
            "size": 10
          },
          "aggs": {
            "count": {
              "value_count": {
                "field": "_id"
              }
            }
          }
        },
        "role_1_ratio": {
          "bucket_script": {
            "buckets_path": {
              "role_1": "role_type['manager']>count",
              "role_2": "role_type['lead']>count"
            },
            "script": "params.role_1 / (params.role_1+params.role_2)*100"
          }
        },
        "role_2_ratio": {
          "bucket_script": {
            "buckets_path": {
              "role_1": "role_type['manager']>count",
              "role_2": "role_type['lead']>count"
            },
            "script": "params.role_2 / (params.role_1+params.role_2)*100"
          }
        }
      }
    }
  }
}

如果它不适合您,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何定义Elasticsearch查询中具有特定字段的结果项的百分比? 的相关文章

随机推荐