elasticsearch上的日期范围返回太多结果

时间:2017-07-03 12:59:50

标签: php date elasticsearch

使用日期范围时遇到问题。我有以下代码段:

const ISO8601_FROM = 'Y-m-d\TH:i:s+1200';
const ISO8601_TO = 'Y-m-d\TH:i:s-1200';

$dateRange = new RangeBuilder();
if ($this->filterDateFrom instanceof \DateTime) {
    $dateRange->from($this->filterDateFrom
        ->setTime(0, 0, 0)
        ->format(self::ISO8601_FROM)
    );
}
if ($this->filterDateTo instanceof \DateTime) {
    $dateRange->to($this->filterDateTo
        ->setTime(23, 59, 59)
        ->format(self::ISO8601_TO)
    );
}
if ($dateRange->isValid()) {
    $boolQuery->addMust(new Range('dateCreate', $dateRange->buildRange()));
}

我的RangeBuilder将返回的json字符串部分是:

"range" : {
    "dateCreate" : {
        "gte" : "2000-01-01T00:00:00+1200",
        "lte" : "2000-01-01T23:59:59-1200"
    }
}

正如您所见,我希望从1月1日起获得结果 我现在的问题是我也获得了1月2日的文件。

因为_mapping有点广泛,我只会发布块的开头:

{"myindex":{"mappings":{"tdo":{"properties":{"author":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"client":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"content":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"dateCreate":{"type":"date"},"documents":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},"id":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}},...

1 个答案:

答案 0 :(得分:0)

您似乎不在查询和索引映射中使用相同的时区。

发布您的地图信息以及您不希望得到的响应之一可能会有所帮助。