我在漫威插件中运行一个查询,它正常工作(返回4个文档),如下所示
我想在C#中使用NEST进行此查询,我期望与此表达式的插件相同的结果,但它返回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 contaims创建的网址&#34; ../ dota2 / object / _search ..&#34; 我不明白为什么它包含那种参数..这是我的问题的关键。为什么它在url中生成对象?
答案 0 :(得分:0)
请注意,您在两个查询中都没有使用相同的日期。
在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"
所以也许这就是你没有从代码中获得任何结果的唯一原因。