django-haystack. Как я могу отфильтровать `sqs.filter (id__in =qs_pk)`, если у меня есть список `qs_pk`, содержащий более 1024 элементов?

#django #elasticsearch #django-haystack

#django #elasticsearch #джанго-стог сена

Вопрос:

Вот мой код:

 qs_pk = Vacancy.objects.values_list('pk', flat=True)
sqs = SearchQuerySet().models(Vacancy)
sqs = sqs.filter(id__in=qs_pk)
  

когда я пытаюсь использовать sqs.count() метод, я получаю исключение:

elasticsearch.исключения.Ошибка запроса: TransportError (400, ‘search_fase_execution_exception’, ‘Не удалось проанализировать запрос [идентификатор: («281134» ИЛИ «281135», ИЛИ «272222», ИЛИ «287848», ИЛИ «190255», ИЛИ «266921», ИЛИ «235700», ИЛИ «235683», ИЛИ «281138», ИЛИ «281144», ИЛИ » 186683″ ИЛИ «281145», ИЛИ «281147», ИЛИ «244712» …………….

но если я ограничу qs_pk = qs_pk[:1024] , тогда все в порядке.

Ответ №1:

Я кое-что нашел в elasticsearch журналах:

Caused by: org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024

Возможно, для этого нужно отредактировать некоторое значение elasticsearch.yml