如何从具有特定请求值的搜索查询中排除结果?

时间:2019-03-17 04:19:57

标签: elasticsearch logstash elastic-stack filebeat

我想计算每天访问具有特定字段值的文档的次数。我这样做是通过每天检索索引,然后针对每个索引执行搜索。

搜索查询:

"query": {
  "bool": {
    "should": {
      "exists": {
        "field": "field_to_find"
      },
    },
  }
}

文档结果结构:

{  
  ...
  "_shards":{  
    ...
  },
  "hits": {  
    "total": 6,
    "hits": [{  
      ...
      "_source": {  
        "request": "/data/000000/comment",
        "field_to_find": 000000,
        ...
      }
    }, {  
      ...
      "_source": {  
        "request": "/data/111111",
        "field_to_find": 111111,
        ...
      }
    }]
  }
}

我只想计算包含请求结构/dataset/<data_id>的匹配数。我需要在计数中排除所有其他值。

执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用Regexp Query

{
  "query": {
    "bool": {
      "must": [{
        "exists": {
          "field": "field_to_find"
        },
        "regexp": {
          "request": "^/data/[0-9]+$"
        }
      }]
    }
  }
}