Как добавить условие 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" => ' ' }
                   }
                  ]
           }
Другие вопросы по тегам