elasticsearch date_range查询和巢api

时间:2015-09-08 19:53:36

标签: elasticsearch nest

我在漫威插件中运行一个查询,它正常工作(返回4个文档),如下所示 enter image description here

我想在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中生成对象?

1 个答案:

答案 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"

所以也许这就是你没有从代码中获得任何结果的唯一原因。