У меня есть мнимый индекс test
с отображением ниже
PUT test
{"mappings" : {
"properties" : {
"endTs" : {
"type" : "date",
"format": "yyyy-MM-dd HH:mm:ss",
"index": true
},
"startTs" : {
"type" : "date",
"format": "yyyy-MM-dd HH:mm:ss",
"index": true
}
}
}
}
И добавьте некоторое значение, как показано ниже
POST _bulk
{ "index" : { "_index" : "test"} }
{ "startTs": "2020-01-01 00:00:00", "endTs": "2020-01-01 00:15:00" }
{ "index" : { "_index" : "test"} }
{ "startTs" : "2020-01-01 00:15:00", "endTs" : "2020-01-01 00:30:00" }
{ "index" : { "_index" : "test"} }
{ "startTs" : "2020-01-01 00:30:00", "endTs" : "2020-01-01 00:45:00" }
{ "index" : { "_index" : "test"} }
{ "startTs" : "2020-01-01 00:45:00", "endTs" : "2020-01-01 01:00:00" }
{ "index" : { "_index" : "test"} }
{ "startTs": "2020-01-01 01:00:00", "endTs": "2020-01-01 01:15:00" }
{ "index" : { "_index" : "test"} }
{ "startTs" : "2020-01-01 01:15:00", "endTs" : "2020-01-01 01:30:00" }
{ "index" : { "_index" : "test"} }
{ "startTs" : "2020-01-01 01:30:00", "endTs" : "2020-01-01 01:45:00" }
{ "index" : { "_index" : "test"} }
{ "startTs" : "2020-01-01 01:45:00", "endTs" : "2020-01-01 02:00:00" }
Моя цель - выполнить какой-либо запрос диапазона в этом startTs
и endTs
поле. как startTs: 2020-01-01 00:00:00'
и endTs: 2020-01-01 00:45:00'
. Мне нужно только фильтровать с time
не полным datetime
форматом. Поэтому я попробовал ниже фильтр
GET test/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"startTs": {
"gte": "00:00:00",
"format": "HH:mm:ss"
}
}
},
{
"range": {
"endTs": {
"lte": "00:45:00",
"format": "HH:mm:ss"
}
}
}
]
}
}
}
Я ожидал, что он вернет все значения записи, меньшие, чем 2020-01-01 00:45:00
{ "startTs": "2020-01-01 00:00:00", "endTs": "2020-01-01 00:15:00" }
{ "startTs" : "2020-01-01 00:15:00", "endTs" : "2020-01-01 00:30:00" }
{ "startTs" : "2020-01-01 00:30:00", "endTs" : "2020-01-01 00:45:00" }
Но он ничего не дал вообще.
"hits" : {
"total" : {
"value" : 0,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
}
Затем я попытался
GET test/_search
{
"query": {
"bool": {
"must": [
{
"script": {
"script": {
"source": "doc['startTs'].value.minute >= 0"
}
}
},
{
"script": {
"script": {
"source": "doc['endTs'].value.minute <= 45"
}
}
}
]
}
}
}
Он возвращает все значения, которые имеют минуты меньше, чем равные 45, и это также не ожидается.
Как выполнить запрос для данного индекса с временным диапазоном? любая помощь высоко ценится.
Я использую asticsearch 7,6