【问题标题】:Elasticsearch query : how to use terms query with Range?Elasticsearch 查询:如何将术语查询与 Range 结合使用?
【发布时间】:2022-01-14 03:37:39
【问题描述】:

我是 Elasticsearch 的新手,如何使用带范围的术语查询?或者如果不可能的话如何修改

这是我的查询

 {
 "size": 0,
 "query": {
"terms": {
  "action": [
    "created",
    "updated",
    "deleted"
  ]
}
},
 "aggs": {
   "2": {
  "terms": {
    "field": "action",
    "order": {
      "_count": "desc"
    },
    "size": 100
  },
  "aggs": {
    "3": {
      "date_histogram": {
        "field": "timestamp",
        "fixed_interval": "30m",,
        "min_doc_count": 1
      }
    }
  }
}
}
}

这是我要添加的时间范围,

  {
"range": {
"timestamp": {
"gte": "now-5y",
  "lte": "now",
  "format": "epoch_millis"
 }

}

【问题讨论】:

    标签: elasticsearch esquery


    【解决方案1】:

    您需要使用bool/filter 查询来组合termsrange 约束,如下所示:

    {
      "size": 0,
      "query": {
        "bool": {
          "filter": [
            {
              "terms": {
                "action": [
                  "created",
                  "updated",
                  "deleted"
                ]
              }
            },
            {
              "range": {
                "timestamp": {
                  "gte": "now-5y",
                  "lte": "now",
                  "format": "epoch_millis"
                }
              }
            }
          ]
        }
      },
      "aggs": {
        "2": {
          "terms": {
            "field": "action",
            "order": {
              "_count": "desc"
            },
            "size": 100
          },
          "aggs": {
            "3": {
              "date_histogram": {
                "field": "timestamp",
                "fixed_interval": "30m",
                "min_doc_count": 1
              }
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 2016-05-15
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多