range query doesn't support multiple fields, found X and Y

Доброе время суток

Использую django и elasticsearch.

При фильтрации, возникает ошибка

RequestError(400, 'parsing_exception', "[range] query doesn't support multiple fields, found [votes_all] and [votes_ru]")

Происходит это из-за условия

es_cond = (
                    ES_Q(
                        'range', **{
                            field_tmpl % ALL: {'gte': val},
                        }) & ES_Q(
                        'range', **{
                            field_tmpl % self.country_code: {
                                'lt': settings.GAME_MIN_VOTES_FOR_COUNTRY_RATE_DISPLAY
                            }
                        })
                    ) | ES_Q(
                        'range', **{
                            field_tmpl % self.country_code: {
                                'gte': max(val, settings.GAME_MIN_VOTES_FOR_COUNTRY_RATE_DISPLAY)
                            }
                        }
                    )

где field_tmpl = 'votes_%s', All = 'all', self.country_code = 'ru'

Не могу разобраться, почему возникает ошибка, так как в аналогичном хапросе по другому полю все хорошо


UPDATE

Обновил (упростил) до

ES_Q(
  'range', **{
    field_tmpl % ALL: {'gte': val},
  }
) | ES_Q(
  'range', **{
    field_tmpl % self.country_code: {
      'gte': max(
        val, settings.GAME_MIN_VOTES_FOR_COUNTRY_RATE_DISPLAY
      )
    }
  }
)

В отладке

es_cond.to_dict()
{'bool': {'should': [{'range': {'votes_all': {'gte': 0}}}, {'range': {'votes_ru': {'gte': 2}}}]}}

Но в выводе нет результатов.

Причем в БД имеются 2800+ записей по этому условию


Ответы (1 шт):

Автор решения: Za Ars

Проблема была в другом блоке, везде где было Q('range', **{'f1' : {'gte': v1}, 'f2' : {'gte': v2}} заменил на Q('range', **{'f1' ....}) | Q('range', {'f2' ....}) и это исправило ошибку.

Исчезновение данных решено через search_index --rebuild

→ Ссылка