【问题标题】:Convert elastic search query + aggregations to nest syntax将弹性搜索查询 + 聚合转换为嵌套语法
【发布时间】:2019-04-07 17:38:04
【问题描述】:

我需要将以下用 Kibana 编写的嵌套查询和聚合转换为 c# 嵌套语法。 主要问题是关于“收获日期”子聚合(我需要将其设置为最近 3 个月)。但也不确定查询本身是否是最佳实践。

GET tdnetindex/_search
{
  "size": 0,
  "aggs": {
    "TermsAggregation": {
      "terms": {
        "field": "database",
        "size": 100
      },
      "aggs": {
        "DateHistogramAggregation": {
          "date_histogram": {
            "field": "harvest_date",
            "interval": "month"
          }
        }
      }
    }
  },
  "query": {
    "bool": {
      "filter": {
        "range": {
          "harvest_date": {
            "gte": "now-3M/M"
          }
        }
      }
    }
  }
}

到目前为止我所做的是:

var query = elasticClient.Search<ElasticResponse>(s => s
                .Size(0)
                .Aggregations(a1 => a1
                    .Terms("TermsAggregation", t => t
                        .Field(f => f.DataBase)
                        .Size(100)
                        .Aggregations(a2 => a2
                            .DateHistogram("DateHistogramAggregation", dh => dh
                            .Field(f => f.HarvestDate)
                            .Interval(DateInterval.Month)
                            )
                        )
                    )
            )
            .Query(q => q
                .Bool(b => b
                    .Filter(f => f
                        .Range(r => r
                            .GreaterThanOrEquals(....);
                        )
                    )
                )
            )
           )

【问题讨论】:

    标签: elasticsearch c#-4.0 nest


    【解决方案1】:

    几乎在那里,只需要使用.DateRange(r =&gt; r...)而不是.Range(r =&gt; r...)

    对于DateMath表达式,可以直接使用字符串"now-3M/M",也可以翻译成

    DateMath.Now.Subtract("3M").RoundTo(DateMathTimeUnit.Month)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 2021-09-01
      • 2015-09-24
      • 2018-09-23
      • 2012-04-14
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多