Предположим, у меня есть индекс со всеми фильмами, выпущенными с 2010 по 2019 год;Как я могу перевести этот запрос в SQL на ElasticSearch?
Select *
From movies
Where
releaseDate between '2018-01-01' and '2019-01-01' and
gender is like 'action' and
(mainActorId = 42 or mainActorId is null)
Я хочу все боевики 2018 года с определенным главным актером или вообще без главного актера.Как бы я перевел это в запрос ElasticSearch?
Из того, что я прочитал в документации, я мог бы использовать что-то вроде этого:
{
"size":0,
"query":{
"bool":{
"must":[
{
"range":{
"releaseDate":{
"from":"2018-01-01T00:00:01.531Z",
"to":"2019-01-01T00:00:01.531Z",
"include_lower":true,
"include_upper":true,
"boost":1.0
}
}
},
{
"terms":{
"gender":[
"action"
],
"boost":1.0
}
},
{
"terms":{
"mainActorId":[
42,
56
],
"boost":1.0
}
}
],
"must_not":[
{
"exists":{
"field":"mainActorId",
"boost":1.0
}
}
],
"adjust_pure_negative":true,
"boost":1.0
}
}
}
Но это не дает мне никакогохиты, хотя в 2018 году были выпущены боевики с главным актером, которого я хочу (или вообще без главных актеров).Если я уберу предложение «must_not Существовать», запрос будет работать нормально и даст мне боевики с основными актерами, которых я хочу, но я также хочу боевики без главных актеров ...