日付範囲を使用する際に問題が発生しました。私は、次のコードスニペットを持っている: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}}},...
'dateCreate'フィールドのタイプは何ですか?インデックスマッピングで確認してください。 – Roopendra
タイプは「日付」です。 – altralaser
さて、[公式文書](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html)に記載されている日付形式で試しましたか? – Roopendra