2015-12-03 49 views
0

有一个带有时间戳的文档,其格式为2015-05-18T19:08:35Z。这在下面的查询中正确返回。 但是,如果我将时间间隔从5分钟增加到10分钟,则结果中不会显示同一行。使用日期间隔进行范围查询

curl -XGET "http://localhost:9200/enwiki_content/page/_search?&pretty=true" -d' { 
    "query": { 
    "range": { 
     "timestamp": { 
     "gte": "2015-05-18T19:04:00Z", 
     "lte": "2015-05-18T19:09:00Z" 
     } 
    } 
} } ' > out2.txt 



curl -XGET "http://localhost:9200/enwiki_content/page/_search?&pretty=true" -d' { 
    "query": { 
    "range": { 
     "timestamp": { 
     "gte": "2015-05-18T19:01:00Z", 
     "lte": "2015-05-18T19:09:00Z" 
     } 
    } 
} } ' > out2.txt 

上面的第二个查询应返回第一个查询中的所有行+任何其他匹配行。对? (这是维基百万的数据(超过100 GB)如果有问题的话)。

+0

你能确保你使用正确的时区,即'Z'而不是'z'?可能不会有太大变化,但永远不会知道。 – Val

+0

试过了。这没有什么区别。看起来“Z”和“z”都是一样的。 – shantanuo

+0

映射可在这里... https://en.wikipedia.org/w/api.php?action=cirrus-mapping-dump&format=json – shantanuo

回答

1

原因是因为第二个查询可能会返回更多结果,而您只能获得前10个(默认)。

尝试增加第二个查询的大小,您应该得到预期的记录。

curl -XGET "http://localhost:9200/enwiki_content/page/_search?&pretty=true" -d' { 
    "size": 100,    <--- add this line 
    "query": { 
    "range": { 
     "timestamp": { 
     "gte": "2015-05-18T19:01:00z", 
     "lte": "2015-05-18T19:09:00z" 
     } 
    } 
} } ' > out2.txt 

               add size 
                   | 
                   V 
curl -XGET "http://localhost:9200/enwiki_content/page/_search?size=100&pretty=true" -d' { 
    "query": { 
    "range": { 
     "timestamp": { 
     "gte": "2015-05-18T19:01:00z", 
     "lte": "2015-05-18T19:09:00z" 
     } 
    } 
} } ' > out2.txt 
+0

什么是允许的最大尺寸?换句话说,我可以从弹性搜索返回多少数据? – shantanuo

+0

尽可能多的,但逻辑限制将取决于很多因素,如你的RAM(包含结果),CPU(处理它们),网络(发送它们)。当返回结果时,使用'from/size'分页更合理,并且只有在用户确实需要/请求数据时才会请求数据。 – Val