elasticsearch - 在elasticsearch中按计数过滤

标签 elasticsearch aggregate-functions aggregate

考虑以下数据

POST programming/languages/1
{
  "name":"java",
  "type":"general_purpose"
}
POST programming/languages/2
{
  "name":"javascript",
  "type":"scripting"
}
POST programming/languages/3
{
  "name":"c",
  "type":"general_purpose"
}

GET programming/languages/_search
{
  "query": {
   "match": {
    "type":"general_purpose"
   }
  }
}

如果我需要查找具有多个字段type匹配的文档,在elasticsearch中该怎么做?

通常使用group byhaving子句,我们可以在SQL中实现这一点。 我们可以在elasticsearch中实现这一点吗?

最佳答案

您好,您可以使用 top_hits 查询,它不适合您希望找到某个术语的大量文档的情况。根据自己的情况尝试一下。但我认为这个查询可以找到你想要的。

GET /programming/languages/_search?search_type=count
{
  "aggs": {
    "byTop": {
      "terms": {
        "field": "type",
        "min_doc_count": 2,
        "size": 10
      },
      "aggs": {
        "theTop": {
          "top_hits": {
            "size":5
          }
        }
      }
    }
  }
}

关于elasticsearch - 在elasticsearch中按计数过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28762169/

相关文章:

elasticsearch - Elasticsearch低模糊分数

java - 如何识别结果来自哪个索引?

python - 重新索引elasticsearch api超时,文档大小较大

r - 如何使用 R 根据组指定添加列数据?

mysql - 当给定的列字符串完全匹配时,如何将值增加到新表?

postgresql - Postgres 9.6 - jsonb 列中特定字段的平均值,并按同一 jsonb 列上的另一个字段进行分组

domain-driven-design - DDD - 由于聚合数据不同而导致多个有界上下文?

elasticsearch - 使用 _id 更新文档elasticsearch

PostgreSQL - JSONB 列的 GROUP_CONCAT

sql - ClickHouse中连续计算项目数