Как добавить условие OR в запросе Elasticsearch ruby?
В моем случае я бы хотел добавить условие ИЛИ в запрос Elasticsearch. Вот мой запрос,
query_body = {
'query' => {
'bool' => {
'must' => [{ 'range' => {'@timestamp' => { 'from' => stream_filters[:first_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ"), 'to' => stream_filters[:second_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ") } } }, {'term' => {"@timeout" => true} }, {'term' => {"@dest" => dest} }, {'term' => {"@source" => source} } ]
}
}, 'facets' => facets
}
Я хотел бы добавить 'term' => {"@dest" => ' '}
пустой чек на @dest вместе с 'term' => {"@dest" => dest}
Я пытался добавить условие или, но это не работает.
query_body = {
'query' => {
'bool' => {
'must' => [{ 'range' => {'@timestamp' => { 'from' => stream_filters[:first_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ"), 'to' => stream_filters[:second_time].gmtime.strftime("%Y-%m-%dT%H:%M:%SZ") } } }, {'term' => {"@timeout" => true} }, {'term' => {"@source" => source} } ],
'filter' => {
'or' => [{
'term' => { "@dest" => dest }
'term' => { "@dest" => ' ' }
}]
}
}
}, 'facets' => facets
}
Может ли кто-нибудь помочь мне с этим?
1 ответ
Это похоже на синтаксическую ошибку в вашем предложении фильтра. Пожалуйста, попробуйте с правильным синтаксисом, как показано ниже:
'filter' => {
'or' => [
{
'term' => { "@dest" => dest }
},
{
'term' => { "@dest" => ' ' }
}
]
}