elasticsearch date_range 查询 witn nest api
elasticsearch date_range query witn nest api
我在 marvel 插件中 运行 查询,它工作正常(return 4 文档),如下所示
我想在 C# 中使用 NEST 进行此查询,我希望此表达式的插件结果相同,但它 returns 0..
函数调用:
EsCodes myes = new EsCodes();
myes.CreateConnection("localhost", "dota2");
var result = myes.getDatasBetweenDates("01/01/2010 00:00:00", "01/01/2015 00:00:00");
连接:
private static ElasticClient es = new ElasticClient();
public void CreateConnection(string hostname, string defaultIndex)
{
var node = new Uri(string.Format("http://{0}:9200", hostname));
var settings = new ConnectionSettings(node).SetDefaultIndex(defaultIndex).UsePrettyResponses();
es = new ElasticClient(settings);
}
和功能:
public List<IndexModel> getDatasBetweenDates(string startdate, string enddate)
{
ElasticClient myes = this.getConnection();
List<IndexModel> indices = new List<IndexModel>();
if (myes != null)
{
var result = myes.Search<dynamic>(q => q.Query(p => p.Range(v => v.OnField("dateofplay").GreaterOrEquals(startdate).LowerOrEquals(enddate))).Size(10)).Documents;
}
...
return indices;
}
这有什么问题吗?
编辑: 我认出了由 NEST 创建的 url 包含“../dota2/object/_search..”
我不明白为什么它包含那种参数..这是我的问题所在。为什么它在 url 中生成对象?
请注意,您在两个查询中使用的日期不同。
在 Marvel 中您使用 "22/06/2010 00:00:00"
和 "16/09/2015 00:00:00"
在您的代码中,您使用 "22/06/2012 00:00:00"
和 "16/09/2014 00:00:00"
所以这可能是您没有从代码中获得任何结果的唯一原因。
我在 marvel 插件中 运行 查询,它工作正常(return 4 文档),如下所示
我想在 C# 中使用 NEST 进行此查询,我希望此表达式的插件结果相同,但它 returns 0..
函数调用:
EsCodes myes = new EsCodes();
myes.CreateConnection("localhost", "dota2");
var result = myes.getDatasBetweenDates("01/01/2010 00:00:00", "01/01/2015 00:00:00");
连接:
private static ElasticClient es = new ElasticClient();
public void CreateConnection(string hostname, string defaultIndex)
{
var node = new Uri(string.Format("http://{0}:9200", hostname));
var settings = new ConnectionSettings(node).SetDefaultIndex(defaultIndex).UsePrettyResponses();
es = new ElasticClient(settings);
}
和功能:
public List<IndexModel> getDatasBetweenDates(string startdate, string enddate)
{
ElasticClient myes = this.getConnection();
List<IndexModel> indices = new List<IndexModel>();
if (myes != null)
{
var result = myes.Search<dynamic>(q => q.Query(p => p.Range(v => v.OnField("dateofplay").GreaterOrEquals(startdate).LowerOrEquals(enddate))).Size(10)).Documents;
}
...
return indices;
}
这有什么问题吗?
编辑: 我认出了由 NEST 创建的 url 包含“../dota2/object/_search..” 我不明白为什么它包含那种参数..这是我的问题所在。为什么它在 url 中生成对象?
请注意,您在两个查询中使用的日期不同。
在 Marvel 中您使用 "22/06/2010 00:00:00"
和 "16/09/2015 00:00:00"
在您的代码中,您使用 "22/06/2012 00:00:00"
和 "16/09/2014 00:00:00"
所以这可能是您没有从代码中获得任何结果的唯一原因。