【问题标题】:Elasticsearch filter results by fieldElasticsearch 按字段过滤结果
【发布时间】:2021-10-15 09:37:07
【问题描述】:

我是 dsl 新手,这看起来很简单。代码应在指定的日期范围内按小时计算总条目数。我添加了一个bool,这样结果应该有一个名为“消息”的字段,其中应该包含“[成功”

GET sample_index/_search
{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "[sucess"
          }
        }
      ]
    },
    "range": {
      "timestamp": {
        "gte": "2021-01-01",
        "lte": "2021-01-10"
      }
    }
  }, 
  "aggs": {
    "hit_count_per_day": {
      "date_histogram": {
        "field": "timestamp",
        "calendar_interval": "hour"
      }
    }
  }
}

返回的错误是

  {
  "error" : {
    "root_cause" : [
      {
        "type" : "parsing_exception",
        "reason" : "[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
        "line" : 13,
        "col" : 5
      }
    ],
    "type" : "parsing_exception",
    "reason" : "[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
    "line" : 13,
    "col" : 5
  },
  "status" : 400
}

【问题讨论】:

    标签: elasticsearch querydsl


    【解决方案1】:

    您还需要在must 子句中包含range 查询。如下所示修改您的查询

    {
      "size": 0,
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "message": "[sucess"
              }
            },
            {
              "range": {
                "timestamp": {
                  "gte": "2021-01-01",
                  "lte": "2021-01-10"
                }
              }
            }
          ]
        }
      },
      "aggs": {
        "hit_count_per_day": {
          "date_histogram": {
            "field": "timestamp",
            "calendar_interval": "hour"
          }
        }
      }
    }
    

    【讨论】:

    • @HC LW 请仔细阅读答案,如果这解决了您的问题,请告诉我?
    • 不幸的是,其他人在其他地方回复了与您运行类似的代码,但都返回 0 次点击。我觉得这是我的错描述问题错误,但它似乎很简单。从字面上看,在索引的 Discover 可视化中,我所做的只是指定一个日期范围,然后在搜索栏中键入“[success”,它包含在一个名为“message”的字符串字段中,然后显示 2 个命中。 @ECoder
    • 似乎仅使用字符串匹配不起作用:{ "size": 0, "query": { "bool": { "must": [ { "match": { "message": "[success" } } ] } } }
    • @HCLW 您能否分享您的索引映射和您正在执行查询的示例索引数据。这将帮助我为您的问题提供更好的解决方案
    • @HCLW 请不要提出单独的问题(与同一问题相关)。恕我直言,最好在这里对同一个问题添加任何修改,而不是每次都问一个单独的问题-> stackoverflow.com/questions/68765129/…
    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2014-11-17
    相关资源
    最近更新 更多