在 Kibana 和 C# NEST 中使用逻辑 AND 查询

分享于2023年04月15日 elasticsearch kibana nest 问答
【问题标题】:Using logical AND query in Kibana and C# NEST在 Kibana 和 C# NEST 中使用逻辑 AND 查询
【发布时间】:2023-04-08 23:54:01
【问题描述】:

我正在尝试在 Kibana 中实现一个简单的查询,然后在 C# NEST 中实现。我来自 SQL 背景,正在努力寻找文档以在 Elasticsearch 中执行相对简单的 SQL 查询。我试图实现的查询是有效的......

SELECT * FROM table 
WHERE logdate > STR_TO_DATE('2020-02-01 23:59:59','%Y-%m-%d %H:%i:%s')
AND logdate < STR_TO_DATE('2020-02-03 00:00:00','%Y-%m-%d %H:%i:%s')
AND username = 'user01'

我可以将它们作为单独的 kibana 查询来执行....

GET auditlog/_search
{
  "query": {
    "range": {
      "logdate": {
        "gt": "2020-02-01T23:59:59",
        "lt": "2020-02-03T00:00:00"
      }
    }
  }
}

GET table/_search
{
  "query": {
    "match": {
      "username": "user01"
    }
  }
}

但是当我尝试将它们组合成一个查询时,我得到一个“parsing_exception”错误...

GET auditlog/_search
{
  "query" : {
    "bool" : {
      "must": [
        {
          "match": {
            "username": "user01"
          },
          "range": {
            "logdate": {
              "gt": "2020-02-01T23:59:59",
              "lt": "2020-02-03T00:00:00"
            }
          }
        }
      ]
    }
  }
}

我查看了 Elasticsearch 文档,但似乎找不到答案,因此我们将不胜感激,在此先感谢


【解决方案1】:

试试这个

GET auditlog/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "username": "user01"
          }
        },
        {
          "range": {
            "logdate": {
              "gt": "2020-02-01T23:59:59",
              "lt": "2020-02-03T00:00:00"
            }
          }
        }
      ]
    }
  }
}

【讨论】:

  • 谢谢。尝试转换为 NEST,但在日期上作为字符串到双重转换时出现错误,然后无法将 lambda 表达式转换为类型 'Nest.ISearchRequest' & 'Nest.QueryContainer[] ``` Client.SearchAsync (s => s .From (0) .Take(10) .Query(q => q .Bool(b => b .Must(m => m .Range(r => r .Field("时间戳") .GreaterThan("2017-03 -07T13:30:00") .LessThan("2017-03-07T13:40:00") ) .MatchPhrase(mp => mp .Field("Action") .Query("第 30 周") ) )).Result.Documents.ToList(); ```
  • @adig14 使用 .DateRange() 代替 .Range() elastic.co/guide/en/elasticsearch/client/net-api/current/…