Я новичок в поиске elasti c, и я борюсь с запросом диапазона дат. Я должен запросить записи, которые попадают между определенными датами. Записи JSON, помещенные в базу данных поиска elasti c, выглядят следующим образом:
"messageid": "Some message id",
"subject": "subject",
"emaildate": "2020-01-01 21:09:24",
"starttime": "2020-01-02 12:30:00",
"endtime": "2020-01-02 13:00:00",
"meetinglocation": "some location",
"duration": "00:30:00",
"employeename": "Name",
"emailid": "abc@xyz.com",
"employeecode": "141479",
"username": "username",
"organizer": "Some name",
"organizer_email": "cde@xyz.com",
Мне нужно запросить записи, у которых есть время начала между «2020-01-02 12:30:00» до «2020-01-10 12:30:00». Я написал такой запрос:
{
"query":
{
"bool":
{
"filter": [
{
"range" : {
"starttime": {
"gte": "2020-01-02 12:30:00",
"lte": "2020-01-10 12:30:00"
}
}
}
]
}
}
}
Этот запрос не дает ожидаемых результатов. Я предполагаю, что человек, который поместил данные в поисковую базу данных elasti c в моем офисе, не установил отображение, а Elasti c Search динамически определяет тип данных «время начала» как «текст». Следовательно, я получаю противоречивые результаты. Я могу установить сопоставление следующим образом:
PUT /meetings
{
"mappings": {
"dynamic": false,
"properties": {
.
.
.
.
"starttime": {
"type": "date",
"format":"yyyy-MM-dd HH:mm:ss"
}
.
.
.
}
}
}
И запрос будет работать, но мне не разрешено это делать (офисные политики). Какие у меня есть альтернативы, чтобы я мог выполнить свою задачу.
Обновление:
Я предположил, что тип данных - "Текст", но по умолчанию Elasti c Поиск применяет как «Текст», так и «Ключевое слово», чтобы мы могли осуществлять поиск как по полному тексту, так и по ключевым словам. Если он также установлен как «Ключевое слово». Будет ли это полезно для меня в любом случае. У меня нет доступа ко многим вещам в офисе, поэтому я не могу отладить запрос. У меня есть только API поиска, для которого мне нужно построить запрос.
GET / встречи / _mapping выходные данные:
'
'
'
"starttime" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
'
'
'