Elasticsearch返回总计624但是命中数组为空

时间:2017-01-07 18:29:53

标签: elasticsearch

我的查询有一个奇怪的结果:它总共返回612个文档但没有命中。

这是查询:

{
  "from": 900,
  "size": 30,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "user_id": "145698489"
              }
            }
          ],
          "should": [
            {
              "bool": {
                "must": [
                  {
                    "range": {
                      "date_created": {
                        "to": "2016-07-30T20:11:09.176-03:00",
                        "gte": "2016-07-07T23:39:45.530-03:00"
                      }
                    }
                  }
                ],
                "must_not": [
                  {
                    "term": {
                      "resource.object.label": "hidden"
                    }
                  }
                ],
                "should": []
              }
            }
          ]
        }
      }
    }
  }
}

这就是结果:

{
    "_shards": {
        "failed": 0,
        "successful": 1,
        "total": 1
    },
    "hits": {
        "hits": [],
        "max_score": 1,
        "total": 612
    },
    "timed_out": false,
    "took": 73
}

但如果我更改日期范围,我会得到正确的结果。

为什么ES会这样做?

3 个答案:

答案 0 :(得分:6)

因为您将from设置为900。如果您的点击次数少于900,则不会返回点击数。

答案 1 :(得分:0)

在查询中,您应尝试从0.设置。 同样重要的是要知道,ES最近在处理滚动方面发生了一些变化。因此,应该放置scrol的位置很重要,请尝试将一个next_scroll = results['_scroll_id']设置在while循环之外,而另一滚动next_scroll = results['_scroll_id']则放置在while循环代码行的末尾。我更改了scrol位置后,它对我有用。

答案 2 :(得分:0)

就我而言,这是因为我将限制设置为零,哈哈。