使用Nest DateRange

时间:2017-04-27 16:23:52

标签: elasticsearch nest

使用this示例,我想出了以下查询。我没有从中得到任何结果,但如果我更换" 01/01 / 2017"与' null'然后我得到记录(所有从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 个答案:

答案 0 :(得分:1)

您的字段映射不正确或日期格式不正确。请尝试以下方法:

  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)));