使用嵌套日期范围

using Nest DateRange

使用 this 示例,我提出了以下查询。我没有从中得到任何结果,但如果我用 'null' 替换“01/01/2017”,那么我会得到记录(全部来自 2014 年,所以我知道它应该返回数据)。谁能帮帮我?

 var response = elasticClient.Search<AnalyticsFormData>(x => x
       .Type("formdata")
       .Size(500)
       .Query(q => q.Bool(b => b.Must
              (mu => mu.MatchPhrase(m => m
          .Field(f => f.AppId)
              .Query(input.FormAppId)))
           .Filter(fi => fi
           .DateRange(r => r
           .Field(f => f.LastUpdated)
           .LessThanOrEquals(DateMath.Anchored("01/01/2017"))))))              
           .Sort(s => s.Ascending(f => f.LastUpdated)));

您的字段映射不正确,或者日期格式不正确。尝试以下操作:

  1. 使用自动映射创建新索引

    elasticClient.CreateIndex(indexName,
        create => create.Mappings(
            mappings => mappings.Map<AnalyticsFormData>(map => map.AutoMap())
        )
    );
    
  2. 使用以下方法设置日期

    var response = client.Search<AnalyticsFormData>(x => x
        .Size(500)
        .Query(q => q.Bool(b => b.Must
            (mu => mu.MatchPhrase(m => m
        .Field(f => f.AppId).Query("FormAppId")))
        .Filter(fi => fi
        .DateRange(r => r
        .Field(f => f.LastUpdated)
        .LessThanOrEquals(new DateTime(2017, 1, 1))))))
        .Sort(s => s.Ascending(f => f.LastUpdated)));