TransWikia.com

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

Stack Overflow на русском Asked by Za Ars on December 28, 2021

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

Использую 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+ записей по этому условию

One Answer

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

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

Answered by Za Ars on December 28, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP