与Elasticsearch中的范围查询结合使用时,扫描和滚动查询不起作用

时间:2015-04-19 22:55:16

标签: java elasticsearch

我正在尝试使用Java API执行扫描和滚动查询,同时将其与范围查询相结合,但我没有得到任何点击。我不确定我的查询或数据是否有问题,但下面是我的代码:

String from = "1429192800000";
String to = "1429193100000";

QueryBuilder qb = rangeQuery("myField")
                 .gte(from)
                 .lte(to);

SearchRequestBuilder searchBuilder = client.prepareSearch(oldIndex)
                                     .setTypes("myType")
                                     .setSearchType(SearchType.SCAN)
                                     .setScroll(new TimeValue(60000))
                                     .setQuery(qb)
                                     .setSize(100);

这是我的输出:

{
   "_scroll_id" : my64BitScrolliD,
   "took" : 576,
   "timed_out" : false,
   "_shards" : {
   "total" : 15,
   "successful" : 15,
   "failed" : 0
},
"hits" : {
   "total" : 0,
   "max_score" : 0.0,
   "hits" : [ ]
}
}

我尝试过不使用java api进行查询,但仍然没有返回任何命中。这是我的疑问:

  curl -XGET "http://localhost:9220/path/to/cluster/myIndex/myType/_search?search_type=scan&scroll=1m -d '{
     "size": 100,
     "query": {
        "range": {
          "myField": {
            "from": "1429192800000",
            "to": "1429193100000"
          }
        }
     }
  }'

我得到与上面相同的输出。我已应用范围查询的字段包含一个纪元时间戳,并且数据存在于指定范围之间,因此我认为查询没有错误(我已经使用_search API测试了它而没有使用扫描和滚动它返回了我命中!)。

我想补充一点,如果我不将范围查询与它结合使用,扫描和滚动查询就可以了!由于存在大量数据,因此我希望通过指定时间范围来批量获取结果。我错过了一些基本的东西吗?如果需要更多信息,请与我们联系。

0 个答案:

没有答案
相关问题