忽略弹性搜索中的重复

时间:2017-09-01 15:56:46

标签: elasticsearch elasticsearch-query

我有很多记录,其中msg是' a'。其中一些记录具有相同的类型。

我正在尝试编写一个查询来计算msg' a'的数量,但不会计算重复次数。

示例:

  • 1:msg =' a',type =' b'
  • 2:msg =' a',type =' b'
  • 3:msg =' a',输入 =' c'

这应该返回两个,因为第一个和第二个记录具有相同的类型,并且只计算一次。

到目前为止,这是我的查询。

body: {
  query: {
    bool: {
      must: [
        {
          range: {
            "@timestamp" => { from: 'now-1d', to: 'now' }
          }
        },
        { match: { msg: 'a' }}
      ]
    }
  }
}

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

尝试使用聚合,他们会为你计算:) 在这里阅读: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-aggregations-bucket-terms-aggregation.html

尝试这样的事情:

body:{
query: {
    bool: {
      must: [
        {
          range: {
            "@timestamp" => { from: 'now-1d', to: 'now' }
          }
        },
        { match: { msg: 'a' }}
      ]
    }
  }
},
  aggs:{
     "type":{
        "terms":{
              "field":"type"
         }
     }
  }
}