如何在Elastic Search中获得此sql查询结果

时间:2019-08-27 06:09:19

标签: elasticsearch elasticsearch-dsl

我有一个错误索引,其中包含php应用程序记录的所有错误。现在,我想要一个DSL查询器通过消息以及计数返回明显的错误。

类似于mysql查询:

SELECT *, COUNT(*) AS total FROM错误GROUP BY消息;

映射我的索引:

"mappings": {
  "errors": {
    "properties": {
      "message": {
        "type": "keyword"
      },
      "trace": {
        "type": "keyword"
      },
      "file": {
        "type": "keyword"
      }
    }
  }
}

预期结果:

  

消息|档案|计数

     

未定义的变量$ param在index.php的第20行| project / index.php | 10

     

helper.php中第15行的未定义变量$ opt | project / helper.php | 4

     

..........

我正在使用弹性搜索5.6。预先感谢。

1 个答案:

答案 0 :(得分:1)

我认为

top hits聚合可以帮助您实现这一目标。

GET errors/_search?size=0
{
  "aggs": {
    "error-counts": {
      "terms": {
        "field": "message"
      },
      "aggs": {
        "messages": {
          "top_hits": {
            "size": 100
          }
        }
      }
    }
  }
}

这将为每个消息创建存储桶,每个存储桶中的总数,并在每个存储桶中列出100条记录。