У меня есть документы в индексе Elasticsearch со следующей структурой:
{
"title": 'Nutrtional facts',
"begin_timestamp" : 1582686052,
"end_timestamp" : 1582686093
}
{
"title": 'Guitar facts',
"begin_timestamp" : 1447991100,
"end_timestamp" : 1447994100
}
{
"title": 'Hair style facts',
"begin_timestamp" : 1447991100,
"end_timestamp" : 1447994100
}
{
"title": 'Piano facts',
"begin_timestamp" : 1554416211,
"end_timestamp" : 1591308724
}
Я собираюсь получить документы, заголовок которых совпадает с facts
и если начальная или конечная метка времени больше текущей дата и время.
title matches `facts` && begin_timestamp > CURRENT_DATE_TIME OR end_timestamp > CURRENT_DATE_TIME
Текущий запрос, который я выполняю, выглядит следующим образом:
{
"query": {
"bool": {
"must": [
{
"match": {
"title": "facts"
}
}
],
"should": [
{
"range": {
"begin_timestamp_for_search": {
"gte": 1580853917
}
}
},
{
"range": {
"begin_timestamp_for_search": {
"gte": 1580853917
}
}
}
]
}
}
}
Однако он совпадает со всем, что соответствует facts
, и возвращает все документы независимо от временные метки до или после текущей даты и времени. Я довольно новичок в ES, и мне интересно, как я мог бы написать запрос, чтобы единственные документы, которые возвращались, были:
{
"title": 'Nutrtional facts',
"begin_timestamp" : 1582686052,
"end_timestamp" : 1582686093
}
{
"title": 'Piano facts',
"begin_timestamp" : 1570227141,
"end_timestamp" : 1591308724
}