查询字段内的项目 - DSL 查询

Query for an item inside of Fields - DSL Query

我阅读了这篇文章 elasticsearch query and match query,以便能够在我的整个日志中查询具有特定 ID 的 ElasticApmTraceId

所以我尝试执行以下操作以获得 ElasticApmTraceID:

GET /customer-simulation-es-app-logs*/_search
{
 "query": { 
   "match": {
     "fields": {
       "ElasticApmTraceId": "da58115e800c284b8e2556185c1c8e64"
     }
   }
 }
}

但是,当我这样做时,returns:

为什么它 returns 是 400 而不是我想要的?

根据文档结构,ElasticApmTraceId 字段在 fields 内。您可以使用 fields.ElasticApmTraceId

访问 ElasticApmTraceId 的值

将您的查询修改为

{
  "query": {
    "match": {
      "fields.ElasticApmTraceId": "da58115e800c284b8e2556185c1c8e64"
    }
  }
}

我建议您使用 boolmustterm 到 query.The 以下文章应该对您有所帮助:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

GET /customer-simulation-es-app-logs*/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "ElasticApmTraceId": {
              "value": "da58115e800c284b8e2556185c1c8e64"
            }
          }
        }
      ]
    }
  }
}