简体   繁体   English

我如何在Elasticsearch的查询DSL中应用匹配和范围

[英]How i can apply match and range in the query DSL in elasticsearch

I want use the match and range, my body in the query is : 我想使用匹配和范围,查询中的正文为:

{
  "query": {        
    "match" : {
      "netscaler.ipadd" : "192.68.2.39"
    },
    "range": {
      "@timestamp": {
        "gte":"2015-08-04T11:00:00",
        "lt":"2015-08-04T12:00:00"
      }
    }
  },
  "aggs" : {
    "avg_grade" : {
      "avg" : { "field" : "netscaler.stat.system.memusagepcnt" } 
    }
  }
}

and elsaticsearch responds with: elsaticsearch回应:

{
  "error": {
    "root_cause": [{
      "type": "parsing_exception",
      "reason": "[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
      "line": 6,
      "col": 7
    }],
    "type": "parsing_exception",
    "reason": "[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
    "line": 6,
    "col": 7
  },
  "status": 400
}

I need know which is the best way or the correct way for do that. 我需要知道哪种方法是最好的方法或正确的方法。

If you have multiple queries you probably should wrap them inside a bool query: 如果您有多个查询,则可能应将它们包装在布尔查询中:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "netscaler.ipadd": "192.68.2.39"
          }
        },
        {
          "range": {
            "@timestamp": {
              "gte": "2015-08-04T11:00:00",
              "lt": "2015-08-04T12:00:00"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "avg_grade": {
      "avg": {
        "field": "netscaler.stat.system.memusagepcnt"
      }
   }
 }
}

More info in the docs 文档中的更多信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM